あなたは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);
}
2つのディクショナリの間にキーの衝突がある場合、どのような動作を想定していますか? –
@ericj:bの値が使用されます。 – michaelr524