下面是一个使用LINQ进行分组计数和最大列的例子:
// 假设有一个包含学生信息的类
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
public string Grade { get; set; }
}
// 创建一个学生列表
List students = new List()
{
new Student { Name = "Tom", Age = 15, Gender = "Male", Grade = "A" },
new Student { Name = "Alice", Age = 16, Gender = "Female", Grade = "B" },
new Student { Name = "John", Age = 15, Gender = "Male", Grade = "A" },
new Student { Name = "Emma", Age = 16, Gender = "Female", Grade = "C" },
new Student { Name = "Mike", Age = 15, Gender = "Male", Grade = "B" },
new Student { Name = "Lily", Age = 16, Gender = "Female", Grade = "A" },
};
// 使用LINQ进行分组计数和最大列
var result = students.GroupBy(s => s.Grade)
.Select(g => new
{
Grade = g.Key,
Count = g.Count(),
MaxAge = g.Max(s => s.Age)
});
// 输出结果
foreach (var item in result)
{
Console.WriteLine($"Grade: {item.Grade}, Count: {item.Count}, Max Age: {item.MaxAge}");
}
这段代码首先创建了一个包含学生信息的Student
类,然后创建了一个学生列表。接下来,使用LINQ的GroupBy
方法按照Grade
属性对学生进行分组。然后,使用Select
方法创建一个新的匿名类型,包含分组的Grade
、每个组的行数Count
,以及每个组的最大年龄MaxAge
。最后,使用foreach
循环遍历结果并输出。
输出结果为:
Grade: A, Count: 3, Max Age: 16
Grade: B, Count: 2, Max Age: 15
Grade: C, Count: 1, Max Age: 16
这表示有3个学生属于A级别,最大年龄为16岁,有2个学生属于B级别,最大年龄为15岁,有1个学生属于C级别,最大年龄为16岁。