C#如何通过LINQ按Name分组合并对象列表并对Salary字段求和
C# LINQ 按Name分组求和实现方案
实现逻辑
- 调用
GroupBy方法按Name字段对原列表分组 - 对每个分组做投影:Key为分组对应的Name值,Salary通过
Sum方法对分组内所有元素的Salary字段求和,Div取分组内第一个元素的Div值(匹配你示例中同Name对应同Div的场景) - 最后调用
ToList生成新的List<someUi>实例
方法链写法
var result = list .GroupBy(x => x.Name) .Select(g => new someUi { Name = g.Key, Salary = g.Sum(x => x.Salary), Div = g.First().Div }) .ToList();
查询表达式写法
var result = (from item in list group item by item.Name into g select new someUi { Name = g.Key, Salary = g.Sum(x => x.Salary), Div = g.First().Div }).ToList();
补充说明
如果实际业务场景中存在同Name对应不同Div的情况,可以将分组键修改为new {x.Name, x.Div}实现双字段分组,避免Div取值不符合预期。
内容的提问来源于stack exchange,提问作者ARJUN PATEL
相关产品推荐
相关产品推荐

