Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 组合同一列表中的元素_C#_Linq_List - Fatal编程技术网

C# 组合同一列表中的元素

C# 组合同一列表中的元素,c#,linq,list,C#,Linq,List,假设我有一个来自如下数据库的列表: List<Item> list = { new Item { TypeID = 2, Count = 5 }, new Item { TypeID = 2, Count = 7 }, new Item { TypeID = 5, Count = 2 } }; 如何使用LINQ实现这

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

List<Item> list =
{
    new Item
    {
        TypeID = 2,
        Count = 5
    },
    new Item
    {
        TypeID = 2,
        Count = 7
    },
    new Item
    {
        TypeID = 5,
        Count = 2
    }
};
如何使用LINQ实现这一点? 干杯 Simon

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

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

Linq扩展方法联合

var mergedList = list1.Union(list2).ToList();

目前还没有。使用foreach很容易,但我想加入LINQ。对不起,我忘了两个答案都是正确的。但是聪乐战争更快。。。Thx很多,正是我想要的。
var result = list.GroupBy(x => x.TypeID)
                 .Select(g => new Item() { 
                                  TypeId = g.Key, 
                                  Count = g.Sum(x => x.Count)
                         })
                 .ToList();
var mergedList = list1.Union(list2).ToList();