return _companyRepository.GetAll().Where(company => company.Id == Id)
.Include(company => company.offices.Where(o => o.IsActive))
.ThenInclude(office => office.People.Where(p => p.IsFired))
.ThenInclude(person => person.Children)
.ToList();
如何使用Entity Framework Core吸引所有活跃办公室的所有被解雇人员?
我收到此错误:
Where子句在ThenInclude或Include内无效
company.offices.Where(o => o.IsActive)
office.People.Where(p => p.IsFired)
我知道我不能在Where
中使用Include
。问题是如何使用Include
子句过滤数据?
答案 0 :(得分:2)
不可能。
我建议四处寻找那里列出的任何第三方库,例如:
答案 1 :(得分:1)
如果您在查询中使用数据,则无需使用任何Include
。 Include
只是禁用延迟加载的一种方法。 Include
控制是否在导航属性中填充数据。 Include
不能过滤任何内容。
您的查询还将返回公司(有人员)而不是人员。
return _companyRepository.GetAll().Where(company => company.Id == Id)
.SelectMany(company => company.offices)
.Where(o => o.IsActive)
.SelectMany(office => office.People)
.Where(p => p.IsFired)
.Include(person => person.Children)
.ToList();
这将创建一个包含人员(包括其子女)的列表。
最后一个include
控件说,所有子项均已加载此查询。如果删除此include
,您仍然可以访问子级,但不是按需加载或延迟加载。您不会注意到程序功能的任何差异,但是会注意到与sql-server的通信。