2

我有一个如下列表。

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

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
4

2 回答 2

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);
}
于 2013-07-18T16:22:59.567 回答
1
var result = productList.GroupBy(p => p.ID)
                        .Select(g => new Product { 
                            ProductName = g.First().ProductName, 
                            Quantity = g.Sum(p => p.Quantity) });
于 2013-07-18T16:24:32.083 回答