C# 如何用同一个键合并两本词典?

C# 如何用同一个键合并两本词典?,c#,linq,union,C#,Linq,Union,词典1: Dictionary<string, IList<PuntoMappa>> PuntiCantieriCMS = new Dictionary<string, IList<PuntoMappa>>(); 但是当两个键相似时,它会触发一个异常。这应该可以工作: Dictionary<string, List<PuntoMappa>> unioned = PuntiCantieriCMS .Conca

词典1:

Dictionary<string, IList<PuntoMappa>> PuntiCantieriCMS = new Dictionary<string, IList<PuntoMappa>>();
但是当两个键相似时,它会触发一个异常。

这应该可以工作:

Dictionary<string, List<PuntoMappa>> unioned = PuntiCantieriCMS
        .Concat(PuntiCantieri)
        .GroupBy(kv => kv.Key)
        .ToDictionary(kv => kv.Key, kv => kv.SelectMany(g => g.Value).ToList());
请注意,我已将值从IList更改为List。

这应该可以:

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

请注意,我已将值从IList更改为List。

可能重复的停止将其标记为的重复。后一个问题不关心在发生键冲突的情况下会发生什么,而这个问题明确指出列表必须合并。的可能副本停止将其标记为的副本。后一个问题不关心在键冲突的情况下会发生什么,而这个问题清楚地指出列表必须合并,但它返回不同的类型。事实上,我不能做PuntiCantieri=联合;之后Linq@markzzz:如果需要IList,请相应地对其进行强制转换:。ToDictionarykv=>kv.Key,kv=>IListkv.SelectManyg=>g.Value.ToList;我想是因为我需要字典,而不是列表:O@markzzz:是的,你看到我的便条了吗我的最后一条评论显示了如何将它转换为IList。@AhmedKRAIEM:不,我想这是指IList。列表隐式地是IList,但字典不是字典。编译器不喜欢这样,但它返回不同的类型。事实上,我不能做PuntiCantieri=联合;之后Linq@markzzz:如果需要IList,请相应地对其进行强制转换:。ToDictionarykv=>kv.Key,kv=>IListkv.SelectManyg=>g.Value.ToList;我想是因为我需要字典,而不是列表:O@markzzz:是的,你看到我的便条了吗我的最后一条评论显示了如何将它转换为IList。@AhmedKRAIEM:不,我想这是指IList。列表隐式地是IList,但字典不是字典。编译器不喜欢这样。
Dictionary<string, List<PuntoMappa>> unioned = PuntiCantieriCMS
        .Concat(PuntiCantieri)
        .GroupBy(kv => kv.Key)
        .ToDictionary(kv => kv.Key, kv => kv.SelectMany(g => g.Value).ToList());
 foreach(var kvp in PuntiCantieri)
 {
      if(PuntiCantieriCMS.ContainsKey(kvp.Key))
      {
         kvp.Value.AddRange(PuntiCantieriCMS[kvp.Key]);
      }

 }