C#&.NET,.NET Core程序中使用Linq如何实现分组统计各组前N条数据呢?
1.21K 次浏览
如题,在C#&.NET,.NET Core的应用程序编程开发中,使用Linq如何实现分组统计各组前N条数据呢?
比如,有以下的Student
集合:
List students = new List
{
new Student { Name = "张三", Age = 18, Gender = "男", Score = 90 },
new Student { Name = "李四", Age = 19, Gender = "女", Score = 85 },
new Student { Name = "王五", Age = 20, Gender = "男", Score = 95 },
new Student { Name = "赵六", Age = 18, Gender = "女", Score = 80 },
new Student { Name = "孙七", Age = 19, Gender = "男", Score = 88 },
new Student { Name = "周八", Age = 20, Gender = "女", Score = 92 }
};
要按性别分组并取每个分组的前2条数据,C#&.NET,.NET Core程序中使用Linq如何应该如何实现呢?
1 个回答
-
在 LINQ 中,你可以使用 GroupBy 和 Take 扩展方法来对集合进行分组和排序操作。以下是一个示例代码,它演示了如何使用 LINQ 分组统计各组前 N 条数据:
运行结果:
姓名 年龄 性别 分数 王五 20 男 95 张三 18 男 90 周八 20 女 92 李四 19 女 85 在这个示例代码中,我们创建了一个名为
students
的学生信息集合。然后,我们使用GroupBy
方法按照性别对学生信息进行分组,并使用SelectMany
和Take
方法统计每组前两名学生的信息。最后,我们使用
OrderBy
和ThenByDescending
方法按照性别和分数对结果进行排序,并输出统计结果。在实际应用中,你可以根据需要修改
GroupBy
和Take
方法的参数来实现不同的分组和统计操作。