0

次のようなデータベースから取得したリストがあるとします。

List<Item> list =
{
    new Item
    {
        TypeID = 2,
        Count = 5
    },
    new Item
    {
        TypeID = 2,
        Count = 7
    },
    new Item
    {
        TypeID = 5,
        Count = 2
    }
};

すべての要素を同じもので合計してTypeID、2 つの要素のみを含む最終結果リストを作成し たいと思います。

List<Item> list =
{
    new Item
    {
        TypeID = 2,
        Count = 12
    },
    new Item
    {
        TypeID = 5,
        Count = 2
    }
};

LINQ を使用してこれを達成するにはどうすればよいですか?
乾杯
サイモン

4

3 に答える 3

7
list.GroupBy(x=>x.TypeID)
    .Select(x=>new Item(){TypeID=x.Key,Count=x.Sum(y=>y.Count) })
    .ToList();
于 2012-09-28T09:41:15.417 に答える
5

最初GroupByにグループ化してから、各グループで実行するために使用できます。TypeIDSum

var result = list.GroupBy(x => x.TypeID)
                 .Select(g => new Item() { 
                                  TypeId = g.Key, 
                                  Count = g.Sum(x => x.Count)
                         })
                 .ToList();
于 2012-09-28T09:41:58.123 に答える
0

Linq 拡張メソッド Union。

var mergedList = list1.Union(list2).ToList();
于 2012-09-28T09:42:42.813 に答える