3

我正在尝试查询用户,包括每个用户的兴趣,但仅在兴趣满足特定条件的情况下:

  return db.Users.Include(u => u.Interests.Where(s => s.TenantId == tenantId))

但我收到一个错误:

包含路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用 Select 运算符。

我尝试了将 .Where 推到外面的想法,但一直无法让它发挥作用。

4

2 回答 2

5

试试这个:

return db.Users.Include("Interests").Where(u => u.Interests.Any(i => i.TenantId == tenantId));

这会导致加载用户,但仅限于与tenantId 匹配的位置。执行查询时,将为这些用户预先加载与兴趣相关的实体。

于 2013-11-07T19:49:04.820 回答
5

要仅包含某些兴趣,您将无法使用该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};
于 2013-11-07T20:00:11.747 回答