你可以ToDictionary直接使用:
public static Dictionary<T, T> MergeDict<T, T>(Dictionary<T, T> a, Dictionary<T, T> b)
{
return a.Concat(b).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
}
注意,這將提高在重複鍵的情況下例外。
如果您需要處理重複密鑰,則需要決定如何處理這個密鑰。例如,這會從「B」刪除重複項:
public static Dictionary<T, T> MergeDict<T, T>(Dictionary<T, T> a, Dictionary<T, T> b)
{
return a.Concat(b.Where(kvp => !a.ContainsKey(kvp.Key)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
}
要獲得相同的行爲,原來,你可以走另外一條路(從「B」保持KeyValuePair值):
public static Dictionary<T, T> MergeDict<T, T>(Dictionary<T, T> a, Dictionary<T, T> b)
{
return b.Concat(a.Where(kvp => !b.ContainsKey(kvp.Key)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
}
如果兩個詞典之間存在關鍵衝突,你打算做什麼? – 2012-04-05 19:37:26
@ericj .:使用b的值 – michaelr524 2012-04-07 21:36:54