0

假设我有一个来自这样的数据库的列表:

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

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

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分组TypeID,然后Sum对每个组执行以下操作:

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 回答