2012-09-28 24 views
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实现此目的?
干杯
西蒙

+0

到目前为止没有什么。那么使用'foreach'会很容易,但是我想用LINQ。 –

+0

对不起,我忘了[link](http://athaveyoutried.com/) – Leri

回答

5

您可以通过TypeID第一和使用GroupBy到组,然后做Sum各组:

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

这两个答案都是正确的。但Cuong Le战争更快...... Thx很多,正是我想要的。 –

7
list.GroupBy(x=>x.TypeID) 
    .Select(x=>new Item(){TypeID=x.Key,Count=x.Sum(y=>y.Count) }) 
    .ToList(); 
0

LINQ的扩展方法联盟。

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

我只有一个列表。 –