您可以直接使用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);
}