2017-02-22 11 views
0

Linqを使ってネストされたGroupByを実行しようとしていますが、動作させることができません。私のコードは以下の通りです:Linqを使用したネストされたGroupBy

エラー76無効な匿名型のメンバ宣言子:最初の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しようとすると、 。匿名型メンバーは、メンバー割り当て、単純な名前またはメンバーアクセスで宣言する必要があります。

エラーはここに強調表示されています:

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

任意の提案ですか?

+0

'.GroupBy(b => new {BatchCode = b.BatchCode})' – slawekwin

答えて

2

あなたは

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

を意味し、あなたがグループにしたい場合のみ、1プロパティで匿名型を作成する必要はありません。


あなたは匿名型が必要な場合は、構文が無効なた匿名型内の別のラムダ演算子(b => new {b => b.BatchCode})を、使用

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

だろう。

+0

お返事ありがとうございます! – Jason

関連する問題