2

我有一个一对多关系(EF),我想编写一个过滤单关系并过滤多关系的查询。

例如:公司有很多员工

编写一个过滤 Company.Name = "ZonSoft" 的查询,其中 Company.Employees 至少有一个名为“Hesius”的员工

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

这工作正常,但如果过滤器在编译时未知怎么办?用户可以从许多过滤器(姓名、年龄……)中进行选择,我不想为此编写太多代码。

我正在尝试使用 Expression 和 linqkit,但我无法使过滤器对员工关系起作用。

'

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"

如何在一个查询中组合这两个过滤器?或者我如何得到想要的结果?

这有效:'

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