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

如何按多个属性对List<ClassName>列表进行汇总统计?

C# 按指定属性汇总List列表

基础实现:使用LINQ GroupBy + Select

直接通过匿名类型指定分组的属性(比如Typ和Name),然后对每组的Amount求和,生成汇总后的列表:

首先修正原代码的变量名和字符串赋值问题:

List<ClassName> list = new List<ClassName>();
list.Add(new ClassName()
{
    Typ = 1,
    Name = "A",
    Amount = 5
});
list.Add(new ClassName()
{
    Typ = 2,
    Name = "B",
    Amount = 3
});
list.Add(new ClassName()
{
    Typ = 1,
    Name = "A",
    Amount = 3
});
list.Add(new ClassName()
{
    Typ = 1,
    Name = "C",
    Amount = 3
});

然后执行汇总逻辑:

using System.Linq; // 需引用LINQ命名空间

var summarizedList = list
    // 按Typ和Name分组,匿名类型会自动比较所有属性值
    .GroupBy(item => new { item.Typ, item.Name })
    .Select(group => new ClassName()
    {
        Typ = group.Key.Typ,
        Name = group.Key.Name,
        Amount = group.Sum(item => item.Amount), // 汇总Amount
        // 如果有其他需保留的相同属性,直接取组内第一个元素的对应值即可
        // OtherProperty = group.First().OtherProperty
    })
    .ToList();

进阶实现:自定义相等比较器(适用于多属性分组或复用逻辑)

如果需要分组的属性较多,或者后续要复用分组规则,可以自定义IEqualityComparer:

public class ClassNameEqualityComparer : IEqualityComparer<ClassName>
{
    public bool Equals(ClassName x, ClassName y)
    {
        if (x == null || y == null)
            return x == y;
        // 定义判断"相同"的属性集合,这里是Typ和Name,可按需添加其他属性
        return x.Typ == y.Typ && x.Name == y.Name;
    }

    public int GetHashCode(ClassName obj)
    {
        if (obj == null)
            return 0;
        // 组合属性的哈希码,确保相同属性组合的哈希值一致
        return HashCode.Combine(obj.Typ, obj.Name);
    }
}

使用该比较器进行分组汇总:

var summarizedList = list
    .GroupBy(item => item, new ClassNameEqualityComparer())
    .Select(group => new ClassName()
    {
        Typ = group.Key.Typ,
        Name = group.Key.Name,
        Amount = group.Sum(item => item.Amount)
    })
    .ToList();

注意事项

  • 如果同一分组内除Amount外的其他属性存在不同值,使用group.First()取属性值时需符合业务预期,若有特殊需求可替换为Max/Min或其他聚合逻辑。
  • 确保已引用System.Linq命名空间,否则无法使用LINQ扩展方法。

内容的提问来源于stack exchange,提问作者Ramenmaestro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:35:23