0

List<Fields>クラス Fields に次のプロパティがあるコレクションがあります

(Name, Currency, Amount, Date, OtherList)ここで、OtherList はリストです

サンプル値

Name  Currency  Amount Date         F1    F2    F3  
ABC   XX        12     12 Jan 2013  X     Y     Z  
BCA   YY        11     12 Jan 2013  A     B     C  
ABC   XX        10     13 Jan 2013  X     Y     Z 

ここで、OtherList オブジェクトは、et.el の および の値を持ちます(X, Y, Z)record1(A, B, C)record2

私がする必要があるのは、結果が次のようになるように、フィールド Name、Currency、F1、F2、および F3 の上記のリストに集計を適用することです。

出力

Name  Currency  Amount Date         F1    F2    F3  
ABC   XX        22     13 Jan 2013  X     Y     Z  
BCA   YY        11     12 Jan 2013  A     B     C  

どうすればこれを行うことができますか?

ありがとう。

4

2 に答える 2

2

LINQ を使用できます。

var aggrList = list
    .GroupBy(x => new { x.Name, x.Currency, x.F1, x.F2, x.F3 })
    .Select(grp => new {
            Name = grp.First().Name,
            Currency = grp.First().Currency,
            Amount = grp.Sum(x=>x.Amount),
            Date = grp.Max(x=>x.Date),
            F1 = grp.First().F1,    
            F2 = grp.First().F2,    
            F3 = grp.First().F3,    
        });
于 2013-01-14T06:59:24.223 に答える
0

このようにグループ化してみてください。

list.Where(x => x.OtherList != null && x.OtherList.Count >= 3 )
    .GroupBy(x => new {F1 = x.OtherList[0], F2 = x.OtherList[1], F3 = x.OtherList[2]})
    .Select(g => new
    {
        Name = g.First().Name,
        Currency = g.First().Currency,
        Amount = g.Sum(x => x.Amount),
        Date = g.Max(x => x.Date),
        F1 = g.Key.F1,
        F2 = g.Key.F2,
        F3 = g.Key.F3,
    });

Amount-の関数Dateを適用すると思いますが、フィールドとフィールドの集計をどのように適用する予定ですか?Max()Sum()NameCurrency

于 2013-01-14T06:58:27.483 に答える