如何使用Linq合并列表中同ID元素并累加Quantity值
使用LINQ合并同ID元素并求和数量
要实现合并相同ID元素、累加数量的需求,用LINQ的GroupBy配合Sum就能轻松搞定,比手动写循环简洁得多,且不会遗漏任何元素。
核心代码
var mergedItems = originalItems .GroupBy(item => item.Id) // 按ID分组 .Select(group => new YourItemClass { Id = group.Key, // 分组的Key就是原ID Quantity = group.Sum(item => item.Quantity) // 对组内所有元素的Quantity求和 }) .ToList();
完整示例
假设你的元素类定义如下,下面是可直接运行的完整代码:
// 定义元素类 public class InventoryItem { public string Id { get; set; } public decimal Quantity { get; set; } } // 测试用例 var originalList = new List<InventoryItem> { new InventoryItem { Id = "1", Quantity = 1 }, new InventoryItem { Id = "1", Quantity = 2 }, new InventoryItem { Id = "2", Quantity = 2 }, new InventoryItem { Id = "3", Quantity = 3 } }; // 合并操作 var mergedList = originalList .GroupBy(item => item.Id) .Select(g => new InventoryItem { Id = g.Key, Quantity = g.Sum(i => i.Quantity) }) .ToList();
代码说明
- GroupBy:将原列表中的元素按
Id分组,每个分组包含所有拥有相同Id的元素。 - Select + Sum:遍历每个分组,创建新的元素对象,
Id使用分组的Key(即原元素的Id),Quantity通过Sum方法累加组内所有元素的数量值。 - ToList:将LINQ查询的结果转换为
List类型,得到最终的合并列表。
这个方法会自动处理所有元素,不会遗漏任何条目——所有原列表中的元素都会被纳入分组求和,最终每个唯一Id对应一个合并后的元素。
内容的提问来源于stack exchange,提问作者zabse
相关产品推荐
相关产品推荐

