2

1 対多の関係 (EF) があり、1 の関係をフィルター処理し、多の関係をフィルター処理するクエリを作成したいと考えています。

例:会社には多くの従業員がいます

Company.Name = "ZonSoft" でフィルタリングし、Company.Employees に "Hesius" という名前の従業員が少なくとも 1 人いるクエリを作成します。

from comp in data.Companies.Include("Employees")
where comp.Name = "Zonsoft" AndAlso comp.Employees.Any(Function(em) em.Name = "Hesius")
select comp

これは問題なく動作しますが、コンパイル時にフィルターが不明な場合はどうなるでしょうか? ユーザーは多くのフィルター (名前、年齢など) から選択できますが、そのためのコードをあまり書きたくありません。

Expression と linqkit を試していますが、Employees リレーションでフィルターを機能させることができません。

'

exp1 as Expression(Of Func(Of Company, Boolean) = Function(comp) comp.Name = "Zonsoft"
exp2 as Expression(Of Func(Of Employee, Boolean) = Function(emp) emp.Name = "Hesius"

これら 2 つのフィルターを 1 つのクエリで組み合わせるにはどうすればよいですか? または、希望する結果を得るにはどうすればよいですか?

これは機能します: '

From comp in data.Companies.Include("Employees")
.Where(exp1)
Select comp.

私はこのようなものを探しています:

From comp in data.Companies.Include("Employees")
.Where(exp1 AndAlso comp.Employees.Any(exp2))
Select cc
4

0 に答える 0