Ваше определение верно. Если вы перейдете на вкладку Model , вы увидите обязательные поля, указанные в схеме тела.
var d3 = d1.Concat(d2).ToDictionary(x => x.Key, x => x.Value);
Можно использовать Concat
:
Dictionary<string, object> d1 = new Dictionary<string, object>();
d1.Add("a", new object());
d1.Add("b", new object());
Dictionary<string, object> d2 = new Dictionary<string, object>();
d2.Add("c", new object());
d2.Add("d", new object());
Dictionary<string, object> d3 = d1.Concat(d2).ToDictionary(e => e.Key, e => e.Value);
foreach (var item in d3)
{
Console.WriteLine(item.Key);
}
Сначала это не возможно без цикличного выполнения. Сделан ли тот цикл в (дополнительном) методе, не важно, он все еще требует цикла.
Я на самом деле собираюсь рекомендовать делать его вручную. Все другие данные ответы требуют использования двух методов расширения (Concat - ToDictionary и SelectMany - ToDictionary) и таким образом цикличное выполнение дважды. При выполнении этого для оптимизации кода, это будет быстрее, чтобы сделать цикл по словарю B и добавить, что это - содержание к словарю A.
Править: После дальнейшего расследования деятельность Concat только произошла бы во время вызова ToDictionary, но я все еще думаю, что пользовательский дополнительный метод был бы более эффективным.
Если Вы хотите уменьшить свой размер кода, то просто делают дополнительный метод:
public static class DictionaryExtensions
{
public static IDictionary<TKey,TVal> Merge<TKey,TVal>(this IDictionary<TKey,TVal> dictA, IDictionary<TKey,TVal> dictB)
{
IDictionary<TKey,TVal> output = new Dictionary<TKey,TVal>(dictA);
foreach (KeyValuePair<TKey,TVal> pair in dictB)
{
// TODO: Check for collisions?
output.Add(pair.Key, Pair.Value);
}
return output;
}
}
Затем можно использовать его путем импорта ('использование') пространства имен DictionaryExtensions и запись:
IDictionary<string,objet> output = dictA.Merge(dictB);
Я заставил метод действовать как объекты, неизменны, но Вы могли легко изменить его, чтобы не возвратить новый словарь и просто объединиться в изречения.
var result = dictionaries.SelectMany(dict => dict)
.ToDictionary(pair => pair.Key, pair => pair.Value);