我有一对多关系(EF),我想写一个过滤One关系的查询并过滤多关系。
例如:公司有很多员工
编写一个过滤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 但我不能使过滤器在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"
如何在一个查询中组合这两个过滤器? 或者如何获得理想的结果?
这有效: '
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