1

词典 1:

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

字典 2:

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

我想要联合这两者;在密钥相同的情况下,它们必须IList<PuntoMappa>为每个密钥联合。可能吗?

试过:

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

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

4

2 回答 2

4

这应该有效:

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>

于 2013-06-10T13:54:44.597 回答
1
 foreach(var kvp in PuntiCantieri)
 {
      if(PuntiCantieriCMS.ContainsKey(kvp.Key))
      {
         kvp.Value.AddRange(PuntiCantieriCMS[kvp.Key]);
      }

 } 
于 2013-06-10T13:54:53.860 回答