如何在 linq 中计算重复项

本文关键字:计算 linq | 更新日期: 2023-09-27 18:34:41

可能的重复项:
如何使用 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

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

var students = new List<string> { "John", "Mary", "John" };
var duplicates = students.GroupBy(x => x)
                         .Select(x => new { Name = x.Key, Count = x.Count() });