2

少し問題があります。変数値もチェックする条件をQueryOverに挿入します。このようなもの:

 var qOver = QueryOver.Of<MyModel>(() => myMod)
                .JoinAlias(() => myMod.SubMod, () => subMod, JoinType.LeftOuterJoin)
                    .Where(Restrictions.Or(
                        Restrictions.On(() => myMod.ID).IsIn(MyIDList)
                        , Restrictions.On(MyIDList == null))

SQLsintaxでは次のようなもの

WHERE @Variable = '' OR MyTable.MyField = @Variable

したがって、変数がいっぱいになった場合は、フィールドでフィルタリングします。変数が空(またはnull)の場合、コンテンツをフィルタリングせずにすべてのレコードを選択します。

QueryOverとRestrinctionsを使用してこの結果に到達するにはどうすればよいですか?ありがとうございました!

4

1 に答える 1

7

変数がnullまたは設定されていない場合は、クエリに追加しないでください。

var qOver = QueryOver.Of<MyModel>(() => myMod)
    .JoinAlias(() => myMod.SubMod, () => subMod, JoinType.LeftOuterJoin);

if( MyIDList != null )
    qOver = qOver.Where(Restrictions.Or(Restrictions.On(() => myMod.ID).IsIn(MyIDList))
于 2011-05-20T09:31:43.960 に答える