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

如何基于Child类字段筛选Parent记录并Eager load其所有关联Child

你之前的写法存在两个问题:

  1. Include 中加过滤条件的写法是 EF Core 5 及以上版本提供的「过滤关联实体加载」功能,只会加载满足条件的Child实体,不符合你要加载该Parent所有关联Child的需求;
  2. 没有对Parent实体本身做筛选,所有Parent都会被查询返回,不符合「只保留存在至少一个Child的Property为true的Parent」的要求。

正确的实现代码如下:

var result = await _context.Parents
    // 先筛选符合条件的Parent:只要存在任意一个Child的Property为true就保留
    .Where(p => p.Children.Any(c => c.Property == true))
    // Eager Load 该Parent的所有关联Child,不加过滤条件
    .Include(p => p.Children)
    .ToListAsync();

该写法生成的SQL会先通过EXISTS子查询过滤符合条件的Parent,再关联查询所有关联的Child数据,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:00