5
class Category
{        
    public string Name { get; set; }
    public int Count { get; set;}
}


Name Count
AA   2
BB   3
AA   4

を持っていますIEnumerable<Category>

一意の名前と複数のエントリの合計を持つカテゴリのリストを取得したい

出力

Name Count
AA   6
BB   3

アップデート

class Category 
{ 
public string Name { get; set; } 
public int CountA { get; set;} 
public int CountB { get; set;} 
public string Phone { get; set;} 
}

2つの列を合計するにはどうすればよいですか。電話の列は最後の行または任意の行にすることができます

4

2 に答える 2

5

あなたの更新された質問は、電話番号に関して完全に明確ではありませんが、次のようなものが必要だと思われます。

    var query = from category in list
                group category by category.Name into grouped
                select new { Name = grouped.Key,
                             SumA = grouped.Sum(x => x.CountA),
                             SumB = grouped.Sum(x => x.CountB),
                             Phone = grouped.Last().Phone };

ちなみに、に変更grouped.Last()するgrouped.First()とより効率的です。

この方法で複数の集計を評価することは、一般的に非常に効率的ではありません。私と Marc Gravell が開発したPush LINQプロジェクトは、それほど使いにくいという代償を払って、はるかに効率的です。大量のデータを処理する必要がある場合は、検討することをお勧めします。

于 2009-03-29T07:54:50.480 に答える
1
var foo = new List<Category>() { 
                new Category() { Name = "AA", Count = 2},
                new Category() { Name = "BB", Count = 3},
                new Category() { Name = "AA", Count = 4}
            };

            var bar = foo.GroupBy(c => c.Name).Select(g => new Category(){ Name = g.Key, Count = g.Sum(c => c.Count) });
于 2009-03-29T06:28:42.810 に答える