วิธีที่ดีที่สุดในการผสานพจนานุกรม 2 หรือมากกว่าDictionary<T1,T2>
ใน C # คืออะไร (คุณสมบัติ 3.0 เช่น LINQ ใช้ได้)
ฉันกำลังคิดถึงวิธีการที่เป็นลายเซ็นตามบรรทัดของ:
public static Dictionary<TKey,TValue>
Merge<TKey,TValue>(Dictionary<TKey,TValue>[] dictionaries);
หรือ
public static Dictionary<TKey,TValue>
Merge<TKey,TValue>(IEnumerable<Dictionary<TKey,TValue>> dictionaries);
แก้ไข:มีวิธีแก้ปัญหาที่ยอดเยี่ยมจาก JaredPar และ Jon Skeet แต่ฉันคิดถึงสิ่งที่จัดการกับคีย์ที่ซ้ำกัน ในกรณีที่มีการชนกันมันไม่สำคัญว่าจะบันทึกค่าใดไว้ในคำสั่งตราบเท่าที่มันสอดคล้องกัน
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)