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

使用Linq按Email分组校验用户所有考试是否全部通过的实现问题

解决方案

你可以直接使用LINQ的All()方法实现需求,分组后校验同邮箱下所有考试记录的Passed字段是否均为Yes即可。

场景1:仅筛选全部考试通过的用户

var certifiedUsers = p.GroupBy(s => s.Email)
    // 校验同邮箱下所有考试是否全部通过
    .Where(group => group.All(exam => exam.Passed == "Yes"))
    // 取同邮箱下任意一条记录作为用户基础信息
    .Select(group => group.First())
    .ToList();

场景2:获取所有用户的拿证资格状态

如果你需要保留所有用户,同时标记是否符合拿证要求,可以用如下写法,还能额外统计考试总数、通过数:

var userCertificationStatus = p.GroupBy(s => s.Email)
    .Select(group => new
    {
        UserBaseInfo = group.First(),
        // 是否具备拿证资格
        IsCertified = group.All(exam => exam.Passed == "Yes"),
        // 总考试门数
        TotalExamCount = group.Count(),
        // 通过的考试门数
        PassedExamCount = group.Count(exam => exam.Passed == "Yes")
    })
    .ToList();

优化建议

判断Passed字段时建议增加不区分大小写的逻辑,避免原始数据出现yes/YES这类格式差异导致判断错误:

group.All(exam => exam.Passed.Equals("Yes", StringComparison.OrdinalIgnoreCase))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:06:04