首页 / 问答 / C#&.NET,.NET Core程序中使用Linq如何实现分组统计各组前N条数据呢?

C#&.NET,.NET Core程序中使用Linq如何实现分组统计各组前N条数据呢?

.NET C# GROUP BY Linq 分组 .NET Core 1.21K 次浏览
0

如题,在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 个回答

  • 0

    在 LINQ 中,你可以使用 GroupBy 和 Take 扩展方法来对集合进行分组和排序操作。以下是一个示例代码,它演示了如何使用 LINQ 分组统计各组前 N 条数据:

    运行结果:

    姓名 年龄 性别 分数
    王五 20 95
    张三 18 90
    周八 20 92
    李四 19 85

    在这个示例代码中,我们创建了一个名为students的学生信息集合。然后,我们使用GroupBy方法按照性别对学生信息进行分组,并使用SelectManyTake方法统计每组前两名学生的信息。

    最后,我们使用OrderByThenByDescending方法按照性别和分数对结果进行排序,并输出统计结果。

    在实际应用中,你可以根据需要修改GroupByTake方法的参数来实现不同的分组和统计操作。

    Rector的个人主页

    Rector

    2023-02-24 回答

    我来回答