Nhibernate 条件析取

Nhibernate 条件析取,nhibernate,conditional,criteria,Nhibernate,Conditional,Criteria,我有一个工作标准,但我想让我的方法更灵活 我的标准之一如下所示: .Add( nhc.Restrictions.In("GroupID", groupIDs) || nhc.Restrictions.Eq("UserIDScheduled", userID)); 但我需要做的是在将GroupID和userID参数添加到这里之前检查它们是否确实有值,否则我将得到意外的结果/查询。例如,如果我想获取GroupID在x、y、z中的实体,但不在中包含userid

我有一个工作标准,但我想让我的方法更灵活

我的标准之一如下所示:

    .Add(
        nhc.Restrictions.In("GroupID", groupIDs)
        || nhc.Restrictions.Eq("UserIDScheduled", userID));
但我需要做的是在将GroupID和userID参数添加到这里之前检查它们是否确实有值,否则我将得到意外的结果/查询。例如,如果我想获取GroupID在x、y、z中的实体,但不在中包含userid,或者如果它为null

我可以有一个3-case IF语句来实现这一点,但似乎应该有另一种方法来在线实现它?(如果userID==null,则仅.Add(…In(GroupID)…),如果GroupID==null,等等)


我显然不太熟悉ICriteria API,所以我不确定它的功能是什么。

您可以使用这样的析取:

var disjunction = new Disjunction();

if (userId != null)
    disjunction.Add(Restrictions.Eq("UserIDScheduled", userID));
if (groupIDs != null)
    disjunction.Add(Restrictions.In("GroupID", groupIDs));

criteria.Add(disjunction);

谢谢-不知道为什么我不认为方法链后面有类型:-x