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

如何合并GroupBy分组列表并对非键字段am求和(无需字典/KeyValuePair)

当然可以呀!完全不用依赖Dictionary或者KeyValuePair,靠LINQ自带的GroupBy加Select就能轻松实现你的需求。

给你看具体的实现代码:

// 你的原始列表
List<Cl> list = new List<Cl>() { 
    new Cl() { vi = 1, vs = "q", am = 20 }, 
    new Cl() { vi = 1, vs = "w", am = 30 }, 
    new Cl() { vi = 2, vs = "w", am = 40 }, 
    new Cl() { vi = 1, vs = "q", am = 50 } 
};

// 分组后合并,返回原Cl类型的列表
var mergedList = list.GroupBy(item => new { item.vi, item.vs })
                     .Select(group => new Cl 
                     { 
                         vi = group.Key.vi, 
                         vs = group.Key.vs, 
                         am = group.Sum(item => item.am) 
                     })
                     .ToList();

如果你不需要返回原来的Cl类型,也可以用匿名类型封装结果,更贴合你想要的键值展示形式:

var mergedResult = list.GroupBy(item => new { item.vi, item.vs })
                       .Select(group => new 
                       { 
                           Key = group.Key, 
                           TotalAm = group.Sum(item => item.am) 
                       })
                       .ToList();

简单说下原理:

  • 先用GroupBy把拥有相同vi和vs的元素归为一组,分组的Key是包含这两个字段的匿名类型
  • 再通过Select遍历每个分组,计算组内am的总和,最后把Key里的vi、vs和求和后的结果封装成你需要的对象(原类型或匿名类型都可以)

这样得到的结果完全符合你的要求,而且全程没用到Dictionary或KeyValuePair哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:54:38