Iqueryable作为子查询来过滤另一个iqueryable

时间:2011-05-11 03:17:16

标签: c# entity-framework linq-to-entities iqueryable

我有多对多关系(Sites,Categories,CategoriesXSite)和两个可以定义的可变定义变量:

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;

我希望能够根据可查询的网站将过滤器应用于iqueryable类别,以便我可以使用任何过滤器以及包含某些过滤器的网站的类别的另一个过滤器,这样的一些事情:

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

我之前也提出过类似的问题,因为我不需要过滤类别(here

非常感谢,

1 个答案:

答案 0 :(得分:6)

你可能想要

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 

取决于您的使用案例。