我正在尝试查询用户,包括每个用户的兴趣,但仅在兴趣满足特定条件的情况下:
return db.Users.Include(u => u.Interests.Where(s => s.TenantId == tenantId))
但我收到一个错误:
包含路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用 Select 运算符。
我尝试了将 .Where 推到外面的想法,但一直无法让它发挥作用。
我正在尝试查询用户,包括每个用户的兴趣,但仅在兴趣满足特定条件的情况下:
return db.Users.Include(u => u.Interests.Where(s => s.TenantId == tenantId))
但我收到一个错误:
包含路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用 Select 运算符。
我尝试了将 .Where 推到外面的想法,但一直无法让它发挥作用。
试试这个:
return db.Users.Include("Interests").Where(u => u.Interests.Any(i => i.TenantId == tenantId));
这会导致加载用户,但仅限于与tenantId 匹配的位置。执行查询时,将为这些用户预先加载与兴趣相关的实体。
要仅包含某些兴趣,您将无法使用该Include
方法,因为它不支持此功能。您需要手动Interests
加入Users
:
var query = from user in db.Users
join interest in db.Interests.Where(s => s.TenantId == tenantId)
on user.InterestId equals interest.Id //todo: will need to be updated
into interests;
select new { user, interests};