有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)更有效。是否可以避免交叉运算符?
答案 0 :(得分:0)
如果你想避免相交,你总是可以用Any和Contains来编写它。
context.EmployeeSet.Where(e => e.Companies.Any(c => _companiesParam.Contains(c)) && e.Name == "Bob").ToList();