[英]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.