2013-07-18 58 views
2

我有一個列表如下。將重複列表條目合併爲一個並在C中顯示數量#

List<Product> productList = new List<Product>(); 

而產品類看起來如下所示。

public class Product 
{ 
    public int ID { get; set; } 
    public string ProductName { get; set; } 
    public int Quantity { get; set; } 
} 

現在,如果用戶插入重複的ID標識列表中的條目,我將如何能夠將其合併如下

Product Name  Qty 
Coke    2 
Pepsi    7 

回答

2

你可以使用LINQ建立了一套新的產品:

var results = productList 
       .GroupBy(p => p.ID) 
       .Select(g => new Product { ID = g.Key, ProductName = g.First().ProductName, Quantity = g.Sum(i => i.Quantity) }) 
       .ToList(); 

如果你只需要在產品名稱和數量,你可以使用:

var results = productList 
       .GroupBy(p => p.ProductName) 
       .Select(g => new { ProductName = g.Key, Quantity = g.Sum() }); 

foreach(var product in results) 
{ 
    Console.WriteLine("{0}  {1}", product.ProductName, product.Quantity); 
} 
+0

這有點不對。如果數量已經超過一個,這會給你錯誤的結果。 –

+0

@newStackExchangeInstance好點 - 爲該場景修復 –

1
var result = productList.GroupBy(p => p.ID) 
         .Select(g => new Product { 
          ProductName = g.First().ProductName, 
          Quantity = g.Sum(p => p.Quantity) }); 
相關問題