Merging dictionaries in C#

前端 未结 26 1072
温柔的废话
温柔的废话 2020-11-22 08:25

What\'s the best way to merge 2 or more dictionaries (Dictionary) in C#? (3.0 features like LINQ are fine).

I\'m thinking of a method signa

26条回答
  •  遇见更好的自我
    2020-11-22 09:13

    Based on the answers above, but adding a Func-parameter to let the caller handle the duplicates:

    public static Dictionary Merge(this IEnumerable> dicts, 
                                                               Func, TValue> resolveDuplicates)
    {
        if (resolveDuplicates == null)
            resolveDuplicates = new Func, TValue>(group => group.First());
    
        return dicts.SelectMany, KeyValuePair>(dict => dict)
                    .ToLookup(pair => pair.Key, pair => pair.Value)
                    .ToDictionary(group => group.Key, group => resolveDuplicates(group));
    }
    

提交回复
热议问题