实体框架6过滤子对象

时间:2015-01-12 23:32:48

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

我正在尝试使用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)
              });

不幸的子对象没有被填满。 “产品”列表中包含的产品不是“已启用” 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你可以走另一条路。也尝试包括相关的对象。

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

答案 1 :(得分:0)

你可以这样做。但我检查了你的代码,它也可以。我不知道为什么你没有启用产品...

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