2

重複の可能性:
LINQを使用してリスト内の重複をカウントする方法

linqで重複をどのようにカウントするかについてのアイデア。「ジョン」と呼ばれる学生の数を見つけたい学生オブジェクトのリストがあるとしましょう。

4

2 に答える 2

9

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です。

于 2012-05-21T03:31:42.243 に答える
1
var students = new List<string> { "John", "Mary", "John" };
var duplicates = students.GroupBy(x => x)
                         .Select(x => new { Name = x.Key, Count = x.Count() }); 
于 2012-05-21T04:43:30.367 に答える