我有很多关系(Sites,Categories,CategoriesXSite),我需要通过某些网站名称过滤所有类别,所以我做了我的功课并制作了这个linq:
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);
}
这有可能实现吗?
提前致谢!
答案 0 :(得分:1)
如果您的网站具有类别的导航属性,您可以尝试:
var filteredcategories = FilterSites(siteWord).SelectMany(s => s.Categories);
答案 1 :(得分:0)
如果我正确理解您的要求,您只需从FilterSites返回的IQueryable对象中选择即可完成您想要的任务,例如:
var filteredcategories = from c in FilterSites(siteWord) select c;
我从不使用linq查询语法......我认为这样可以得到你想要的...方法语法如下:
var filteredcategories = FilterSites(siteWord).Where(s => s.Something = "something");