public static IDictionary <TKey, TValue> MergeDifference <TKey, TValue>(this IDictionary <TKey, TValue> first, IDictionary <TKey, TValue> second) { if (first == null) { return(second); } if (second == null) { return(first); } return(second.Concat(first).GroupBy(k => k.Key, v => v.Value).ToDictionary(d => d.Key, d => d.First())); }