实体框架-如何获取包含子实体的筛选集合的实体

时间:2018-10-07 13:23:28

标签: entity-framework linq

我有类别,类别有一个产品集合(Category.Products)。我需要按其ID从数据库中检索一个类别,但我希望它不包括所有产品,而仅包括具有给定条件(例如,order = 0)的产品

如何用linq做到这一点? 我尝试过:

var e = db.Categories
  .Include(a => a.products)
  .Where(a => a.products.Any(r => r.order == 0))
  .FirstOrDefault(p => p.id == id_category);

3 个答案:

答案 0 :(得分:0)

我认为您无法做到。无论如何,对.Include()的调用应该在任何where子句之后,否则将无法工作。

答案 1 :(得分:0)

为了过滤子集合,您可以尝试将其选择为YouCustomModel或匿名投影。

  

请注意,当前无法过滤加载了哪些相关实体。包含将始终引入所有相关实体Xcode hierarchy inspection

var e = db.Categories
          .Where(c => c.id == id_category)
          .Select(p=> new 
          { 

             category = p,
             products = p.Products.Where(k=>k.order==0)
          }.FirstOrDefault();

答案 2 :(得分:-1)

var e = db.Categories.Where(a => a.order == 0);