如何计算linq中的重复数?

dan*_*ial 2 c# linq asp.net

可能重复:
如何使用LINQ计算列表中的重复项

你知道如何计算linq中的副本.假设我有一个学生对象列表,我想找到一个名为'John'的学生数量?

yam*_*men 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());
}
Run Code Online (Sandbox Code Playgroud)

返回:

John: 2
Mary: 1
Run Code Online (Sandbox Code Playgroud)

您也可以显示具有重复项的那些:

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);
}
Run Code Online (Sandbox Code Playgroud)

返回:

Duplicate: John
Run Code Online (Sandbox Code Playgroud)

注意:您需要GroupBy(x => x)根据您的Student对象进行更改.在这种情况下,它只是一个string.