c# - 我怎样才能用相同的键合并两个字典?

标签 c# linq union

词典 1:

Dictionary<string, IList<PuntoMappa>> PuntiCantieriCMS = new Dictionary<string, IList<PuntoMappa>>();

词典 2:

Dictionary<string, IList<PuntoMappa>> PuntiCantieri = new Dictionary<string, IList<PuntoMappa>>();

我想要将它们联合起来;如果 key 相同,则它们必须联合 IList<PuntoMappa>对于每个键。可能吗?

尝试过:

PuntiCantieri = PuntiCantieri .Union(PuntiCantieriCMS ).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

但是当2个key相似时,会触发异常。

最佳答案

这应该有效:

Dictionary<string, List<PuntoMappa>> unioned = PuntiCantieriCMS
        .Concat(PuntiCantieri)
        .GroupBy(kv => kv.Key)
        .ToDictionary(kv => kv.Key, kv => kv.SelectMany(g => g.Value).ToList());

请注意,我已将值从 IList<T> 更改为至 List<T> .

关于c# - 我怎样才能用相同的键合并两个字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17025537/

相关文章:

linq - 是否可以按对象属性进行分组,但将整个对象放在 Key 中?

c# - Linq 的 FirstOrDefault 充当其他类型?

c# - 扩展 C# .NET 应用程序 - 是否构建自定义脚本语言?

c# - Windows 窗体 + 来自 C# 控制台的命令

c# - 如何以编程方式启动新的 Windows 登录 session (RDP 或控制台)

MYSQL 联合和 WHERE 条件

mysql - 为什么 order by 在我的 Union 查询中不起作用?

c# - SQL插入错误

c# - 关于 "Possible Multiple Enumeration"可枚举的 *所有* 使用的 Resharper 警告

php - mysql UNION 语句工作很奇怪