C#中查找Dictionary中重复值的方法


在C#中,`Dictionary` 是一种键值对集合,其中每个键都是唯一的。因此,从严格意义上讲,`Dictionary` 本身不直接支持“查找重复值”的操作,因为值可以重复,但键必须是唯一的。

然而,如果你想要检查 `Dictionary` 中是否有重复的值(即检查是否有多个键对应相同的值),你可以通过以下方式实现:


using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // 示例 Dictionary
        Dictionary<int, string> myDict = new Dictionary<int, string>
        {
            {1, "Apple"},
            {2, "Banana"},
            {3, "Apple"},
            {4, "Cherry"}
        };

        // 使用 LINQ 来查找重复的值
        var duplicateValues = myDict.GroupBy(pair => pair.Value)
                                    .Where(group => group.Count() > 1)
                                    .Select(group => group.Key)
                                    .ToList();

        // 输出重复的值
        foreach (var value in duplicateValues)
        {
            Console.WriteLine($"Duplicate value: {value}");
        }
    }
}

在这段代码中,我们首先创建了一个 `Dictionary` 类型的示例。然后,我们使用 LINQ 的 `GroupBy` 方法按值分组,`Where` 方法来筛选出那些组中有超过一个元素的(即重复的值),并使用 `Select` 方法来获取这些重复值的实际值。最后,我们遍历这个列表并打印出所有重复的值。

这种方法可以有效地帮助你检查并找到 `Dictionary` 中的重复值。