重複の可能性:
LINQを使用してリスト内の重複をカウントする方法
linqで重複をどのようにカウントするかについてのアイデア。「ジョン」と呼ばれる学生の数を見つけたい学生オブジェクトのリストがあるとしましょう。
重複の可能性:
LINQを使用してリスト内の重複をカウントする方法
linqで重複をどのようにカウントするかについてのアイデア。「ジョン」と呼ばれる学生の数を見つけたい学生オブジェクトのリストがあるとしましょう。
GroupByを使用できます:
var students = new List<string>{"John", "Mary", "John"};
foreach (var student in students.GroupBy(x => x))
{
Console.WriteLine("{0}: {1}", student.Key, student.Count());
}
戻り値:
John: 2
Mary: 1
重複しているものも表示できます。
var dups = students.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
foreach (var student in dups)
{
Console.WriteLine("Duplicate: {0}", student);
}
戻り値:
Duplicate: John
注:もちろん、オブジェクトがGroupBy(x => x)
何であるかに応じて変更する必要があります。Student
この場合、それはただのstring
です。
var students = new List<string> { "John", "Mary", "John" };
var duplicates = students.GroupBy(x => x)
.Select(x => new { Name = x.Key, Count = x.Count() });