实体框架 6 筛选子对象

本文关键字:对象 筛选 框架 实体 | 更新日期: 2023-09-27 18:37:13

我正在尝试使用 EF6 从数据库中获取数据。我有两个班级

public class Manufacturer
{
  public int Id {get;set;}
  public string Name {get;set;}
  public bool Enabled {get;set;}
  public virtual IList<Product> Products {get;set;}
}
public class Product
{
  public int Id {get;set;}
  public string Name {get;set;}
  public bool Enabled {get;set;}
  public virtual Manufacturer Manufacturer {get;set;}
}

我只需要获得具有已启用产品的已启用制造商我尝试了以下方法:

var results = _context.Manufacturer
              .Where(m => m.Enabled)
              .Where(m => m.Products.Any(p => p.Enabled))
              .Select(m => new
              {
                  Manufacturer = m;
                  Product = m.Products.Where(p => p.Enabled)
              });

不幸的是,子对象未填充。"产品"列表充满了未"启用"的产品知道吗?

实体框架 6 筛选子对象

你可以

反过来。 还要尝试包含相关对象。

var r = context.Products.Include("Manufacturer")
               .Where(p=>p.Enabled && p.Manufacturer.Enabled);
你可以

这样做。但是我已经检查了您的代码,它也可以工作。我不知道为什么你得到没有启用的产品...

var manufacturers = (from o in _context.Manufacturer
                      where o.Enabled
                      select
                      new
                      {
                          manufacturers  = o,
                          products = o.Products.Where(c=>c.Enabled).ToList()
                      }).ToList();