组合同一列表中的元素

Sim*_*der 0 c# linq list

假设我有一个来自数据库的列表,如下所示:

List<Item> list =
{
    new Item
    {
        TypeID = 2,
        Count = 5
    },
    new Item
    {
        TypeID = 2,
        Count = 7
    },
    new Item
    {
        TypeID = 5,
        Count = 2
    }
};
Run Code Online (Sandbox Code Playgroud)

我想用相同的方法总结所有元素,TypeID以便我有一个仅包含两个元素的最终结果列表:

List<Item> list =
{
    new Item
    {
        TypeID = 2,
        Count = 12
    },
    new Item
    {
        TypeID = 5,
        Count = 2
    }
};
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用LINQ实现这个目标?
干杯
西蒙

L.B*_*L.B 7

list.GroupBy(x=>x.TypeID)
    .Select(x=>new Item(){TypeID=x.Key,Count=x.Sum(y=>y.Count) })
    .ToList();
Run Code Online (Sandbox Code Playgroud)


cuo*_*gle 5

您可以先使用GroupBy分组TypeID,然后Sum对每个组进行分组:

var result = list.GroupBy(x => x.TypeID)
                 .Select(g => new Item() { 
                                  TypeId = g.Key, 
                                  Count = g.Sum(x => x.Count)
                         })
                 .ToList();
Run Code Online (Sandbox Code Playgroud)