这与关于如何在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
的检查。 a
,b
和existingValue
(如果存在)可能是null
。关于c# - 合并两个字典Dictionary <string,Dictionary <string,Object >>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14851510/