コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】Dictionary で値が重複している要素を取得する方法

ソースコード

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

public static class Program
{
    private static void Main()
    {
        var table = new Dictionary<int, string>
        {
            { 100, "フシギダネ" },
            { 101, "フシギダネ" },
            { 102, "フシギダネ" },
            { 200, "フシギソウ" },
            { 201, "フシギソウ" },
            { 300, "フシギバナ" },
        };

        // 重複している要素を取得
        var duplicated = table
                         .GroupBy( c => c.Value )
                         .Where( c => c.Count() > 1 );

        foreach ( var n in duplicated )
        {
            foreach ( var elem in n )
            {
                Console.WriteLine( elem );
            }
        }

        // 100, フシギダネ
        // 101, フシギダネ
        // 102, フシギダネ
        // 200, フシギソウ
        // 201, フシギソウ
    }
}
  • ソースコードの先頭に using System.Linq; を追加する必要があります