簡體   English   中英

使用Linq嵌套組

[英]Nested GroupBy using Linq

我正在嘗試使用Linq執行嵌套的GroupBy,但無法使其正常工作。 我的代碼如下:

    var summaryFile = new RemittanceCenterFilesSummaryListModel
        {
            RemittanceFilesSummary = remittanceCenterSummaryListModel.RemittanceBatchSummaryRecord.GroupBy(x => new { x.FileId, x.SourceFileName  })
                .Select(x => new RemitanceCenterFileSummarizedModel
                {
                    FileId = x.Key.FileId,
                    SourceFileName = x.Key.SourceFileName,
                    Batches = x.ToList().GroupBy(b => new { b => b.BatchCode })
                      .Select(c => new RemittanceCenterBatchSummarizedModel
                      {
                           FileId = x.Key.FileId,
                           SourceFileName = x.Key.SourceFileName,
                           BatchCode = c.Key,
                           BatchType = c.Key,
                           DetailRecordCountAdc = x.Count(y => y.BillingSystemCode == BillingSystemCode.Adc),
                           DetailRecordCountNotAdc = x.Count(y => y.BillingSystemCode == BillingSystemCode.Exceed),
                           AmountAdc = x.Where(y => y.BillingSystemCode == BillingSystemCode.Adc).Sum(y => y.PaymentAmount),
                           AmountNotAdc = x.Where(y => y.BillingSystemCode == BillingSystemCode.Exceed).Sum(y => y.PaymentAmount),
                           AmountTotal = x.Sum(y => y.PaymentAmount),
                      });
                    ScannedBatchCount = x.Count(y => y.BatchType == "S"),
                    ScannedBatchAmount = x.Where(y => y.BatchType == "S").Sum(y => y.PaymentAmount),
                    NonScannedBatchCount = x.Count(y => y.BatchType != "S"),
                    NonScannedBatchAmount = x.Where(y => y.BatchType != "S").Sum(y => y.PaymentAmount), 
                }).ToList()
        };

第一個GroupBy正常工作,但是當我嘗試對批處理字段進行GroupBy時,出現以下構建錯誤:

錯誤76無效的匿名類型成員聲明符。 必須使用成員分配,簡單名稱或成員訪問來聲明匿名類型成員。

該錯誤在此處突出顯示:

    Batches = x.ToList().GroupBy(b => new { b => b.BatchCode })

有什么建議么 ?

你的意思是

Batches = x.ToList().GroupBy(b => b.BatchCode)

如果您只想按一個屬性分組,則無需創建匿名類型。


如果您需要匿名類型,則語法為

Batches = x.ToList().GroupBy(b => new { b.BatchCode })

您在匿名類型中使用了另一個lambda運算符( b => new {b => b.BatchCode} ),該運算符無效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM