Ммм, я не знаю, что больше на формант, но как ваше решение не читается?
Что не так с
foreach (string key in d1.Keys)
{
d3.Add(key,d1[key]+d2[key]);
}
Я на самом деле думаю, что это более понятно, чем некоторые решения linq. Несмотря на то, что я не проверял его, я думаю, что он мог бы иметь более высокую производительность, поскольку он перечисляет только ключи в одном словаре, а не значения, но вы бы использовали фактическое хеширование (или то, что является базовой реализацией словаря) найдите значения, что является самым быстрым способом их получения.
EDIT:
для решения, где ключи не всегда будут одинаковыми, если вы хотите получить общие, вам нужно только добавить строку;
foreach (string key in d1.Keys)
{
if(d2.ContainsKey(key)
d3.Add(key,d1[key]+d2[key]);
}
EDIT2:
Чтобы получить все ключи / значения, если они не совпадают, было бы так:
foreach (string key in d1.Keys)
{
if(d2.ContainsKey(key)
d3.Add(key,d1[key]+d2[key]);
else
d3.Add(key,d1[key])
}
foreach (string key in d2.keys)
{
if(!d1.ContainsKey(key) // only get keys that are unique to d2
d3.Add(key,d2[key]);
}