Cách tốt nhất để hợp nhất 2 hoặc nhiều từ điển ( Dictionary<T1,T2>
) trong C # là gì? (3.0 tính năng như LINQ đều ổn).
Tôi đang nghĩ về một chữ ký phương thức dọc theo dòng:
public static Dictionary<TKey,TValue>
Merge<TKey,TValue>(Dictionary<TKey,TValue>[] dictionaries);
hoặc là
public static Dictionary<TKey,TValue>
Merge<TKey,TValue>(IEnumerable<Dictionary<TKey,TValue>> dictionaries);
EDIT: Có một giải pháp tuyệt vời từ JaredPar và Jon Skeet, nhưng tôi đã nghĩ đến một cái gì đó xử lý các khóa trùng lặp. Trong trường hợp va chạm, không quan trọng giá trị nào được lưu vào dict miễn là nó phù hợp.
dict1.Concat(dict2).GroupBy(p => p.Key).ToDictionary(g => g.Key, g => g.Last().Value)
dictA.Concat(dictB.Where(kvp => !dictA.ContainsKey(kvp.Key))).ToDictionary(kvp=> kvp.Key, kvp => kvp.Value)
.
dicA.Concat(dicB).ToDictionary(kvp => kvp.Key, kvp => kvp.Value)