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

合并字典避免ArgumentException,重复键实现值累加

合并字典时重复键值累加的解决方案

问题分析

你遇到的报错源于原代码误用了SelectMany——在foreach里遍历单个字典时,对单个字典调用SelectMany(d => d),此时d是键值对类型而非可枚举集合,编译器无法推断泛型参数,因此抛出类型推断错误。同时原代码用First()仅取第一个值,完全不符合你累加重复键值的需求。

正确实现(无需拆分键值列表再循环)

直接对整个字典列表操作,通过分组求和生成合并后的字典:

// 生成合并后的字典:重复键的值累加
var mergedDict = listOfDict
    .SelectMany(dict => dict) // 将所有字典的键值对扁平化为一个序列
    .GroupBy(kvp => kvp.Key) // 按键分组
    .ToDictionary(group => group.Key, group => group.Sum(kvp => kvp.Value)); // 每组值求和,生成新字典

// 将合并后的字典添加到原字典列表中
listOfDict.Add(mergedDict);

代码说明

  • SelectMany(dict => dict):把字典列表中所有字典的键值对展开成连续的键值对序列,无需手动拆分键和值的列表
  • GroupBy(kvp => kvp.Key):将相同键的所有键值对归为一组
  • ToDictionary(...):将分组转换为最终字典,每个键对应的值是该组所有值的总和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:15:35