Linq 实体框架核心过滤器由一个实体';s系列

Linq 实体框架核心过滤器由一个实体';s系列,linq,filter,entity-framework-core,Linq,Filter,Entity Framework Core,我试图根据嵌套集合中的数据检索所有实体。 我有一个家庭和一个成人对象,还有一个DbContext: public class Family { // other properties public List<Adult> Adults { get; set; } public List<Child> Children{ get; set; } } public class Person {

我试图根据嵌套集合中的数据检索所有实体。 我有一个家庭和一个成人对象,还有一个DbContext:

    public class Family {
        // other properties
        public List<Adult> Adults { get; set; }
        public List<Child> Children{ get; set; }
    }

    public class Person
    {
        // other properties
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string HairColor { get; set; }
    }

    public class FamilyContext : DbContext
    {
        public DbSet<Family> Families { get; set; }
        // other stuff..
    }
调试时,我可以看到,在包含之后,我拥有了所有的家庭,但只加载了红头发的成年人。所有其他家庭只有0个成年人


所以我想我可以根据加载的成人数量进行过滤。但这不起作用。它似乎只是在需要时加载所有成年人,最终结果是所有现有的家庭实体。

我已经找了好几个小时了。发布后,我立即发现:

var result = ctx.Families.
   Where(family => family.Adults.Any(adult => adult.HairColor.Equals("Red"))).
   ToList()
var result = ctx.Families.
   Where(family => family.Adults.Any(adult => adult.HairColor.Equals("Red"))).
   ToList()