Iqueryable как подзапрос для фильтрации другого Iqueryable - PullRequest
3 голосов
/ 11 мая 2011

У меня есть отношение многие ко многим (Сайты, Категории, CategoriesXSite) и две переменные, определенные в iqueryable, например:

IQueryable<Site> sitesQuery = from s in db.Sites
                         where s.Name.Contains(siteWord)
                         select s



IQueryable<SiteCategorie> categoriesQuery = from c in db.SiteCategories
                                       where c.Parent.ID == 1
                                       select c;

Я хочу иметь возможность применить фильтр к категориям, которые можно запросить, на основе сайтов, которые можно запросить.таким образом, у меня могут быть любые категории с любыми фильтрами плюс еще один фильтр категорий, в которых есть сайты, содержащие определенный фильтр, что-то вроде этого:

from c in categoriesQuery 
where c.Sites == sitesQuery
select c

Я уже задавал подобный вопрос, когда не делалТакже нужно отфильтровать категории ( здесь )

Большое спасибо,

1 Ответ

6 голосов
/ 11 мая 2011

Вы, вероятно, захотите либо

from c in categoriesQuery  
where c.Sites.Any(s => sitesQuery.Contains(s))
select c 

или

from c in categoriesQuery  
where c.Sites.All(s => sitesQuery.Contains(s))
select c 

в зависимости от вашего варианта использования.

...