[英]Using pre-existing iqueryable to filter another iqueryable on Entity Framework
我有很多对很多的关系(Site,category,categoryXSite),我需要通过某些站点名称来过滤所有类别,因此我完成了作业并做了以下内容:
var filteredcategories = from c in context.Categories
from s in c.Sites
where s.Name.Contains(siteWord)
select c;
它运行完美,问题是我已经有了一种过滤网站的方法,并且我想像这样重用它:
var filteredcategories = from c in context.Categories
where c. Sites == FilterSites(siteWord)
select c;
这是我的过滤方法:
public IQueryable<Site> FilterSites(string word)
{
return (from s in context.Sites
where s.Name.Contains(word)
select s);
}
这有可能实现吗?
提前致谢!
如果您的站点具有类别的导航属性,则可以尝试以下操作:
var filteredcategories = FilterSites(siteWord).SelectMany(s => s.Categories);
如果我正确理解了您的要求,则可以通过从FilterSites返回的IQueryable对象中进行选择来完成所需的工作,例如:
var filteredcategories = from c in FilterSites(siteWord) select c;
我从不使用linq查询语法...我想这将为您提供所需的内容...方法语法如下所示:
var filteredcategories = FilterSites(siteWord).Where(s => s.Something = "something");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.