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

正しい親 (すべて Enable=true) を返しますが、すべての子 (enable = 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 に答える