0

n社ありm人従業員1人は複数の会社で働くことができます

会社のリストを提供します{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)をより効果的に書く方法です。交差演算子を回避することは可能ですか?

4

1 に答える 1

0

交差を避けたい場合は、いつでも Any と Contains を使用して記述できます。

context.EmployeeSet.Where(e => e.Companies.Any(c => _companiesParam.Contains(c)) && e.Name == "Bob").ToList();
于 2013-02-20T15:08:50.397 に答える