2013-02-20 60 views
0

有N个公司 有m个员工 雇员可以在多个企业你会如何有效地写这个linq查询?

我给你公司{C1,C2,...}给我,为了这个公司工作和全体员工的名单及其工作名字是鲍勃。

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

搜索所有员工叫鲍勃会很缓慢,因为员工的每家公司的平均数量小于10,所以由我公司第一滤波器。

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

回答

0

如果您想避免相交,您可以随时使用任何和包含进行书写。

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