使用基于值

时间:2015-05-14 10:42:25

标签: c# linq dictionary

如何在字典中连接和删除重复项,如下所示:

Item1: Key=1, Value=test1  
Item2: Key=2, Value=test2  
Item3: Key=3, Value=test1  
Item4: Key=4, Value=test3  
Item5: Key=5, Value=test4

建立一个像这样的新词典:

Item1: Key=1-3, Value=test1  
Item2: Key=2, Value=test2  

Item4: Key=4, Value=test3  
Item5: Key=5, Value=test4  

我设法使用这个来复制:myDictionary.GroupBy(x => x.Value).Where(x => x.Count() > 1);
但我无法从中找到构建新词典的正确方法。

1 个答案:

答案 0 :(得分:4)

这适用于将所有重复项目带入具有共享密钥的新字典:

var dict = new Dictionary<string, string>
{
    {"1", "test1"},
    {"2", "test2"},
    {"3", "test1"}
};

var groupedKeyMap = dict.GroupBy(x => x.Value)
                        .Where(x => x.Count() > 1)
                        .ToDictionary(x => string.Join("-", x.Select(y => y.Key)),
                                      x => x.Key);

如果您需要重复和非重复键值对,请删除Where子句:

var groupedKeyMap = dict.GroupBy(x => x.Value)
                        .ToDictionary(x => string.Join("-", x.Select(y => y.Key)),
                                      x => x.Key);