C# LINQ リスト内の重複を検索する 質問する

C# LINQ リスト内の重複を検索する 質問する

LINQ を使用して、 からList<int>、複数回繰り返されるエントリとその値を含むリストを取得するにはどうすればよいですか?

ベストアンサー1

この問題を解決する最も簡単な方法は、要素を値に基づいてグループ化し、グループ内に複数の要素がある場合はグループの代表を選択することです。LINQ では、これは次のように変換されます。

var query = lst.GroupBy(x => x)
              .Where(g => g.Count() > 1)
              .Select(y => y.Key)
              .ToList();

要素が何回繰り返されるかを知りたい場合は、次を使用できます。

var query = lst.GroupBy(x => x)
              .Where(g => g.Count() > 1)
              .Select(y => new { Element = y.Key, Counter = y.Count() })
              .ToList();

これにより、匿名型の が返され、各要素には、必要な情報を取得するためのListプロパティElementと が含まれます。Counter

最後に、辞書を探している場合は、

var query = lst.GroupBy(x => x)
              .Where(g => g.Count() > 1)
              .ToDictionary(x => x.Key, y => y.Count());

これにより、要素がキーとして、その繰り返し回数が値として含まれる辞書が返されます。

おすすめ記事