У меня есть отношение «Один ко многим» (EF), и я хочу написать запрос, который фильтрует отношение «Один» И фильтрует отношение «Многие».
Например: в компании много сотрудников
Напишите запрос, который фильтрует Company.Name = "ZonSoft" и где Company.Employees имеет
хотя бы один сотрудник с именем "Гесиус"
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