【问题标题】:Using pre-existing iqueryable to filter another iqueryable on Entity Framework使用预先存在的 iqueryable 过滤实体框架上的另一个 iqueryable
【发布时间】:2011-07-24 04:16:06
【问题描述】:

我有一个多对多的关系(站点、类别、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);
}

这可以实现吗?

提前致谢!

【问题讨论】:

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


    【解决方案1】:

    如果您的网站有分类导航属性,您可以试试这个:

    var filteredcategories = FilterSites(siteWord).SelectMany(s => s.Categories);
    

    【讨论】:

      【解决方案2】:

      如果我正确理解您的要求,您可以通过从 FilterSites 返回的 IQueryable 对象中进行选择来完成您想要的操作,例如:

      var filteredcategories = from c in FilterSites(siteWord) select c; 
      

      我从不使用 linq 查询语法...我认为这会得到您想要的...方法语法如下所示:

      var filteredcategories = FilterSites(siteWord).Where(s => s.Something = "something");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-15
        • 2012-08-18
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 2019-12-14
        • 2011-05-06
        相关资源
        最近更新 更多