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

在 SQL 语法中类似于

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

因此,如果我的变量已填充,我将过滤我的字段。如果我的变量为空(或 null),我将选择每条记录而不过滤任何内容。

如何使用 QueryOver 和 Restrictions 达到这个结果?谢谢!

4

1 回答 1

7

如果变量为空或未设置,请不要将其添加到您的查询中。

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 回答