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

C#补全Where子句GroupBy逻辑筛选重复低分学生

C# LINQ 重复低分学生筛选补全方案

规则说明

  • 低分判定标准:分数值 小于等于5
  • 筛选目标:输出存在至少2次相同低分记录的学生,预期运行结果依次为Andy、Bobby、Cindy

补全后完整代码

缺失的判断逻辑为校验分组结果中是否存在「分数属于低分且出现次数≥2」的分组,补全后完整代码如下:

class Student
{
    public int Id { get; set; }
    public string Name { get; set; } = null!;
    public List<int> Scores { get; set; } = new List<int>();

    public static List<Student> GetStudents()
    {
        return new List<Student>()
        {
            new Student
            {
                Id = 1,
                Name="Andy",
                Scores={1,1,2,2,3,4,5,6,7,8}
            },
            new Student
            {
                Id = 2,
                Name="Bobby",
                Scores={3,3,3,3,4,5}
            },
            new Student
            {
                Id = 3,
                Name="Cindy",
                Scores={1,1,2,2,3,4,5}
            },
            new Student
            {
                Id = 4,
                Name="Dave",
                Scores={1,2,3,4,5,6,7,8,9,10}
            }
        };
    }
}


class Program
{
    static void Main()
    {
        var query = Student.GetStudents()
                           .Where(s => s.Scores.GroupBy(i => i)
                                               .Any(g => g.Key <= 5 && g.Count() >= 2));
            

        foreach (var x in query)
            Console.WriteLine(x.Name);

        Console.ReadLine();
    }
}

逻辑解释

  • s.Scores.GroupBy(i => i)会把当前学生的所有分数按值分组,相同分数归为同一组,分组的Key属性对应该组的分数值,组内元素个数对应该分数的出现次数
  • 后续调用Any()方法匹配符合要求的分组,两个判断条件分别为:
    • g.Key <=5:当前分组对应的分数属于低分范畴
    • g.Count() >=2:当前低分的出现次数大于等于2,即存在重复记录
  • 只要学生的分数列表中存在任意一个满足上述两个条件的分组,就会被筛选进入结果集
  • 测试数据中Dave的1-5分各出现1次,无重复低分,因此不会被输出,完全匹配预期结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:27:13