2013-02-20 41 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();