我有一个父类和子类
class Parent
{
bool Enable;
List<Child> Children;
}
class Child
{
bool Enable;
}
我想返回所有父级,其中Enable = true且该父级应包含所有子级,其中Enable = true 。
我创建了以下
var parents = Session.QueryOver<Parent>().Where(p => p.Enabled)
.JoinQueryOver<Child>(p => p.Children).Where(c=>c.Enabled)
.List<Parent>();
它返回正确的父项(所有其中Enable = true),但它返回所有子项(即使enable = false)
有人可以帮我纠正我的查询吗?
答案 0 :(得分:1)
您应该返回Enable = true的子项并加入其父项。然后,您可以使用linq将其分组。
这样的事情:
var children = Session.QueryOver<Child>(c => c.Children)
.Where(c => c.Enabled && c.Parent.Enabled)
.Fetch(c => c.Parent) //This will include the parents in the query so you
.List<Child>(); //avoid a Select N+1
var childrenByParent = children.GroupBy(x => x.Parent);