1

我有一个父子类

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>();

它返回我正确的父母(所有启用=true),但它返回所有孩子(即使启用=false)

有人可以帮我更正我的查询吗?

4

1 回答 1

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);
于 2012-05-26T20:07:36.597 回答