这与关于如何在C#中合并两个词典的问题有关。提出了一个优雅的Linq解决方案,这很酷。

但是,该问题与Dictionary<Object1, Object2>有关,而我有一个字典,其中的值是Dictionary<string, Object>

我正在寻找一种解决方案,用于合并具有以下要求的丝束Dictionary<string, Dictionary<string, Object>>


在不复制两个字典的字典结果的键的情况下,
对于每本字典,我认为按KEY分组可能是解决方案的一部分,但之后...

internal static Dictionary<string, Dictionary<string, object>> OperationDic(Dictionary<string, Dictionary<string, object>> a, Dictionary<string, Dictionary<string, object>> b, string operation)`
    {
        switch (operation)
        {
            case "+":
                var result =  a.Concat(b).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.First().Value);
                return result;
            default:

                throw new Exception("Fail ...");
        }
    }

最佳答案

我不清楚你想要什么。这试图合并两个字典:

    // first copy everything from a
    var result = new Dictionary<string, Dictionary<string, object>>(a);

    // now check to see if we can add stuff from b
    foreach (var entryOuter in b)
    {
      Dictionary<string, object> existingValue;
      if (result.TryGetValue(entryOuter.Key, out existingValue))
      {
        // there's already an entry, see if we can add to it
        foreach (var entryInner in entryOuter.Value)
        {
          if (existingValue.ContainsKey(entryInner.Key))
            throw new Exception("How can I merge two objects? Giving up.");
          existingValue.Add(entryInner.Key, entryInner.Value);
        }
      }
      else
      {
        // new entry
        result.Add(entryOuter.Key, entryOuter.Value);
      }
    }

    return result;


您可能要添加对null的检查。 abexistingValue(如果存在)可能是null

关于c# - 合并两个字典Dictionary <string,Dictionary <string,Object >>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14851510/

10-15 14:55