我正在尝试根据其嵌套集合中的数据检索所有实体。 我有一个Family和一个Adult对象,以及一个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..
}
现在,我想检索所有至少有一个成年人有红头发的家庭。 我最好的猜测是:
var result = ctx.Families.
Include(family => family.Adults.Where(adult => adult.HairColor.Equals("Red"))).
Where(family => family.Adults.Count>0).
ToList();
在调试时,我可以看到在包含之后,我拥有了所有家庭,但只有红色头发的成人被装载。其他所有家庭只有0位成人。
所以我想我可以根据加载的成人人数进行过滤。但这不起作用。似乎在这里需要所有成年人时都将它们加载,最终结果是所有现有的Family实体。
答案 0 :(得分:0)
我一直在找几个小时。发布后立即发现:
var result = ctx.Families.
Where(family => family.Adults.Any(adult => adult.HairColor.Equals("Red"))).
ToList()