You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用LINQ按平均分区间分组学生列表并统计区间数实现方法

实现方案

核心逻辑说明

通过LINQ的Select先计算每位学生平均分,再用GroupBy按自定义的区间规则分组,最后直接对分组结果计数即可得到区间总数。

完整代码实现

// 1. 计算平均分+按区间分组
var studentGroups = students
    // 先计算每位学生的平均分
    .Select(stu => new 
    {
        stu.Name,
        Average = stu.Scores.Average()
    })
    // 按自定义分数区间分组
    .GroupBy(stu => 
    {
        // 可根据需求自由调整区间划分规则
        return stu.Average switch
        {
            > 90 and <= 100 => "Score > 90 and <= 100",
            > 80 and <= 90 => "Score > 80 and <= 90",
            > 70 and <= 80 => "Score > 70 and <= 80",
            > 60 and <= 70 => "Score > 60 and <= 70",
            _ => "Score <= 60"
        };
    })
    // 按区间分数从高到低排序,符合常规展示逻辑
    .OrderByDescending(g => g.Key);

如果使用低于C# 9的版本,把分组部分的switch表达式替换为if-else判断即可。

输出与区间统计

// 输出分组结果
foreach (var group in studentGroups)
{
    Console.WriteLine(group.Key);
    // 组内学生按平均分从高到低排序展示
    foreach (var stu in group.OrderByDescending(s => s.Average))
    {
        Console.WriteLine($" {stu.Name} {stu.Average:F1}");
    }
}

// 直接统计分组数量即为区间总数
int intervalCount = studentGroups.Count();
Console.WriteLine($"分组区间总数:{intervalCount}");

自定义调整说明

如果需要修改区间划分规则,只需要调整GroupBy方法内的分支判断逻辑即可,无需修改其他代码。

内容的提问来源于stack exchange,提问作者user15343916

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:45:03