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

C# 两个Dictionary列表交叉连接后合并为单个字典如何实现

实现方案

基础兼容版(支持所有.NET版本)

直接在SelectMany的结果投影逻辑中完成两个字典的合并,可自定义键冲突处理规则:

// 此处以Dictionary<string, object>为例,可替换为你实际使用的TKey/TValue类型
var mergedResult = list1.SelectMany(x => list2, (x, y) =>
{
    // 复制第一个字典的所有键值对到新字典
    var merged = new Dictionary<string, object>(x);
    foreach (var kvp in y)
    {
        // 规则1:重复键时保留list2字典的值(覆盖逻辑,默认使用)
        merged[kvp.Key] = kvp.Value;
        
        // 规则2:重复键时保留list1字典的值(不覆盖,需注释规则1后启用)
        // if (!merged.ContainsKey(kvp.Key))
        //     merged.Add(kvp.Key, kvp.Value);

        // 规则3:重复键时直接抛出异常,需注释其他规则后启用
        // merged.Add(kvp.Key, kvp.Value);
    }
    return merged;
});

简洁版(仅支持C# 12 + .NET 8 及以上版本)

可以用集合展开语法直接合并,重复键默认以后面的y字典的值为准:

var mergedResult = list1.SelectMany(x => list2, (x, y) => new Dictionary<string, object>([..x, ..y]));

说明

最终返回的mergedResult类型为IEnumerable<Dictionary<TKey, TValue>>,每个元素都是合并完成的单个字典,无外层x/y包装,适配动态结构的字典场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:36:03