c# - 将重复的列表条目合并为一个并在 C# 中显示数量

标签 c#

我有一个列表如下。

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

最佳答案

您可以使用 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);
}

关于c# - 将重复的列表条目合并为一个并在 C# 中显示数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17728930/

相关文章:

C# IEnumerable、IEnumerator 重置函数未被调用

c# - 无法使用 C# 从 EPPlus 调用计算方法

c# - Entity Framework 连接无法识别创建的临时表

c# - EF Core 无法计算表达式值 .NET 6

c# - 从 app.config 文件中读取值时出现问题

c# - 努力从带有参数的存储过程填充数据网格

c# - 将自定义部分写入 app.config

c# - 如何通过传递某些行来读取文本文件行?

c# - 通过 RedirectToRoute 发送列表

c# - 在 Windsor CaSTLe 中向组件依赖项添加符号