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

Linq查询筛选含特定code受益人的支付记录问题求助

Linq查询筛选含特定code受益人的支付记录问题求助

嗨,我来帮你梳理下这个问题~

你当前的查询核心问题在于:Include(b => b.beneficiaries.Where(c => c.code.Equals('08'))) 这个写法只是过滤了每个支付记录返回的关联受益人列表,但并没有对主表的Payement进行筛选——也就是说,只要status_request == 1的支付都会被查出来,只是它们附带的受益人只保留了code为08的那些,但你真正想要的是只获取状态为1,且至少关联了一个code为08的受益人的支付记录对吧?

修正后的查询写法

你需要在主查询的Where条件里,加上对Beneficiaires集合的判断,确保该支付存在符合条件的受益人,同时注意类型匹配的小细节(你的code是string属性,不能用单引号的char值'08',要改用双引号的字符串"08"):

List<Payement> payments = await _DbContext.Payements
    // 如果你需要同时加载符合条件的受益人,保留这个带过滤的Include
    .Include(p => p.Beneficiaires.Where(b => b.code == "08"))
    // 主筛选逻辑:状态为1,且关联的受益人中存在code为08的记录
    .Where(p => p.status_request == 1 && p.Beneficiaires.Any(b => b.code == "08"))
    .Take(5)
    .ToListAsync();

额外的实体类优化建议

我注意到你的实体类有几个小问题,可能会导致EF Core映射报错,建议调整:

  • beneficiaires类里重复定义了ID属性(一个带[Key]标记,一个是重复的无标记属性),请删掉重复的那个;
  • 外键关联建议更清晰:在beneficiaires里新增public int PayementID { get; set; },然后把[ForeignKey("PayementID")]标注在Payements导航属性上,避免EF Core识别关联关系出错;
  • 导航属性名尽量符合规范:比如Payements应该改成Payement(一个受益人只属于一个支付),beneficiaries字段名建议和类名beneficiaires保持大小写一致(或者统一改成Beneficiaires)。

这样调整后,你的查询就能精准筛选出符合要求的支付记录啦~

备注:内容来源于stack exchange,提问作者Sylla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 15:07:58