从键值对列表中拉出所有重复键

时间:2015-04-02 12:37:22

标签: c# linq duplicates key

我有以下列表:

List<KeyValuePair<int, DataDetailValues>> dataResults

键值对中的键可以是重复的 - 例如列表可以包含:

Key    |    Data
1      |    ABC
2      |    DEF
3      |    GHI
1      |    JKL

我希望将键值为1的dataResults中的所有值提取到第二个列表中,即我想要:

 1      |    ABC
 1      |    JKL

非常感谢

2 个答案:

答案 0 :(得分:2)

使用Where: -

List<KeyValuePair<int,DataDetailValues>> result = data.Where(x => x.Key == 1).ToList();

答案 1 :(得分:0)

如果您想要返回任何重复项,即使它们的键值不是1,也可以使用。

        List<KeyValuePair<int, string>> dataResults = new List<KeyValuePair<int,string>>();

        dataResults.Add(new KeyValuePair<int, string>(1, "one"));
        dataResults.Add(new KeyValuePair<int, string>(2, "two"));
        dataResults.Add(new KeyValuePair<int, string>(1, "one1"));
        dataResults.Add(new KeyValuePair<int, string>(3, "three"));
        dataResults.Add(new KeyValuePair<int, string>(2, "two2"));

        var duplicates = dataResults.GroupBy(i => i.Key).Where(g => g.Count() > 1).Select(i => i);