What\'s the best way to merge 2 or more dictionaries (Dictionary
) in C#?
(3.0 features like LINQ are fine).
I\'m thinking of a method signa
Option 1 : This depends on what you want to happen if you are sure that you don't have duplicate key in both dictionaries. than you could do:
var result = dictionary1.Union(dictionary2).ToDictionary(k => k.Key, v => v.Value)
Note : This will throw error if you get any duplicate keys in dictionaries.
Option 2 : If you can have duplicate key then you'll have to handle duplicate key with the using of where clause.
var result = dictionary1.Union(dictionary2.Where(k => !dictionary1.ContainsKey(k.Key))).ToDictionary(k => k.Key, v => v.Value)
Note : It will not get duplicate key. if there will be any duplicate key than it will get dictionary1's key.
Option 3 : If you want to use ToLookup. then you will get a lookup which can have multiple values per key. You could convert that lookup to a dictionary:
var result = dictionaries.SelectMany(dict => dict)
.ToLookup(pair => pair.Key, pair => pair.Value)
.ToDictionary(group => group.Key, group => group.First());