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

Mil*_*lox 3 c# linq-to-entities entity-framework 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;
Run Code Online (Sandbox Code Playgroud)

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

from c in categoriesQuery 
where c.Sites == sitesQuery
select c
Run Code Online (Sandbox Code Playgroud)

我以前也提出了类似的问题,当时我不需要过滤类别(这里)

非常感谢,

Kir*_*rst 6

你可能也想要

from c in categoriesQuery  
where c.Sites.Any(s => sitesQuery.Contains(s))
select c 
Run Code Online (Sandbox Code Playgroud)

要么

from c in categoriesQuery  
where c.Sites.All(s => sitesQuery.Contains(s))
select c 
Run Code Online (Sandbox Code Playgroud)

取决于您的使用案例.