You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:12:35