假设我有一个来自这样的数据库的列表:
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实现此目的?
干杯
西蒙
答案 0 :(得分:7)
list.GroupBy(x=>x.TypeID)
.Select(x=>new Item(){TypeID=x.Key,Count=x.Sum(y=>y.Count) })
.ToList();
答案 1 :(得分: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();
答案 2 :(得分:0)
Linq扩展方法联盟。
var mergedList = list1.Union(list2).ToList();