2012-09-28 28 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

我只有一個列表。 –