你会如何有效地编写这个linq查询?

时间:2013-02-20 15:03:33

标签: linq-to-entities

有n家公司 有m名员工 员工可以在多家公司工作

我给你一个公司列表{c1,c2,...}给我所有为这些公司工作的员工,他们的名字是鲍勃。

context.EmployeeSet.Where(e => e.Companies.Intersect(_companiesParam)!=null).Where(emp=>emp.Name=="Bob").ToList();

搜索所有名为Bob的员工会非常缓慢,因为每家公司的平均员工人数都不到10人,所以我首先要由公司提交。

我关心的是我应该如何编写.Where(e => e.Companies.Intersect(_companiesParam)!= null)更有效。是否可以避免交叉运算符?

1 个答案:

答案 0 :(得分:0)

如果你想避免相交,你总是可以用Any和Contains来编写它。

context.EmployeeSet.Where(e => e.Companies.Any(c => _companiesParam.Contains(c)) && e.Name == "Bob").ToList();