关于导航财产的Where子句

时间:2017-10-26 16:48:03

标签: c# entity-framework-core

我有一个雇主实体,雇主有0个或更多雇员。我希望加载雇主(Id = 16),这样它的员工导航属性只列出说英语的人。所以我这样做:

_uow.EmployerRepository.FirstOrDefault (
    o => o.Id == 16
    && o.Employees.Any(a => a.Language == "english"),
    "Employees");

显然,“任何”意味着“如果任何员工符合您的条件,则返回所有员工记录”。使用此代码,我的雇主将填充其所有员工,只要其中任何一个员工的语言设置为“英语”。

如何更改过滤器,以便Employees导航属性仅填充其Language属性为“english”的Employees?

1 个答案:

答案 0 :(得分:2)

这看起来像是一个两步过程,而不是一个过程。

  1. 从数据库中获取您的雇主。

  2. 现在从Employer.Employees获取所有讲英语的员工。

  3. 您可以采用的另一种方法是仅搜索员工而不是雇主

    我不确定你的结构究竟是什么,但你可能会做这样的事情:

    _uow.EmployeeRepository.Where(x => x.EmployerId = 16 && x.Language == "english")
    
相关问题