C# 关于导航属性的Where条款
我有一个雇主实体,该雇主有0名或更多雇员。我希望加载雇主(Id=16),以便其员工导航属性仅列出说英语的人。所以我这样做:C# 关于导航属性的Where条款,c#,entity-framework-core,C#,Entity Framework Core,我有一个雇主实体,该雇主有0名或更多雇员。我希望加载雇主(Id=16),以便其员工导航属性仅列出说英语的人。所以我这样做: _uow.EmployerRepository.FirstOrDefault ( o => o.Id == 16 && o.Employees.Any(a => a.Language == "english"), "Employees"); 显然,“任何”是指“如果任何员工符合您的条件,则返回所有员工记录”。使用此代码,
_uow.EmployerRepository.FirstOrDefault (
o => o.Id == 16
&& o.Employees.Any(a => a.Language == "english"),
"Employees");
显然,“任何”是指“如果任何员工符合您的条件,则返回所有员工记录”。使用此代码,只要其中任何一位员工的语言设置为“英语”,我的雇主就会被其所有员工填充
如何更改过滤器,使Employees navigation属性只填充语言属性为“english”的员工?这看起来像是一个两步过程,而不是一步
雇主那里获得所有讲英语的员工。employees
_uow.EmployeeRepository.Where(x => x.EmployerId = 16 && x.Language == "english")
它实际上意味着“返回第一个拥有“英语”雇员的雇主。您想要所有雇主;雇员只过滤为英语?不,我想要一个雇主(其中id=16),并且只有其员工(员工语言为英语)。当前,雇主加载的内容是正确的,但只要至少有一名员工设置为英语,员工导航属性将填充所有员工(部分为英语,部分为非英语)。