包含中的EF Where子句

时间:2012-08-23 19:57:37

标签: entity-framework-4

来自我从网上偷走的这个例子:

Company company = context.Companies
                     .Include("Employee.Employee_Car")
                     .Include("Employee.Employee_Country")
                     .FirstOrDefault(c => c.Id == companyID);

如果我想在Employee_Car的包含中使用where子句,我该怎么做?说我只想要它来检索蓝色汽车。

由于

2 个答案:

答案 0 :(得分:4)

简短的回答是你不能仅仅通过使用include来做到这一点。你需要做一些加入。 因此,使用此tip postSO answer,您可以按照这些方式执行操作。 (注意不完全是你的返回类型,但最接近)

var companyBlueCars = from company in context.Companies
                      where company.Id == companyID 
                      select new 
                      {
                          company,
                          blueCars = from employee in company.Employees
                                     where employee.Employee_Car.Colour == "blue"
                                     select employee.Employee_Car
                      };

(我确实对数据结构做了一些猜测,但想法就在那里。)

答案 1 :(得分:1)

您不会这样做,因为include不支持过滤或排序。您必须执行两个单独的查询,以使用其过滤器加载公司和汽车。