如何使用LINQ对C# List中的数据进行分组求和统计
使用LINQ实现分组统计
首先假设你的原始数据是一个包含Id和Value属性的类的List,先定义这个类:
public class OriginalItem { public int Id { get; set; } public int Value { get; set; } }
接下来用LINQ的分组与聚合方法就能实现需求:
// 初始化原始数据列表 List<OriginalItem> originalList = new List<OriginalItem> { new OriginalItem { Id = 1, Value = 5 }, new OriginalItem { Id = 2, Value = 3 }, new OriginalItem { Id = 3, Value = -2 }, new OriginalItem { Id = 1, Value = 27 }, new OriginalItem { Id = 2, Value = 0 }, new OriginalItem { Id = 3, Value = 1 }, new OriginalItem { Id = 1, Value = -4 } }; // 执行分组统计 var result = originalList .GroupBy(item => item.Id) .Select(group => new { Id = group.Key, Count = group.Count(), TotalValue = group.Sum(item => item.Value) }) .ToList();
代码说明
GroupBy(item => item.Id):按Id对原始列表分组,每个分组对应一个唯一的Id值。Select(...):将每个分组转换为包含目标属性的对象,其中group.Key是分组的Id,group.Count()统计分组内元素数量,group.Sum(...)计算分组内所有Value的总和。ToList():将查询结果转换为List集合。
如果需要将结果存入自定义类(而非匿名类型),可以先定义结果类:
public class ResultItem { public int Id { get; set; } public int Count { get; set; } public int TotalValue { get; set; } }
再修改Select部分的代码:
.Select(group => new ResultItem { Id = group.Key, Count = group.Count(), TotalValue = group.Sum(item => item.Value) }) .ToList<ResultItem>();
内容的提问来源于stack exchange,提问作者user517406
相关产品推荐
相关产品推荐

