我有一个有效的标准,但我想让我的方法更灵活。
我的标准之一如下:
.Add(
nhc.Restrictions.In("GroupID", groupIDs)
|| nhc.Restrictions.Eq("UserIDScheduled", userID));
但我需要做的是检查groupIDs& userID params在添加它们之前实际上有值,否则我会得到意想不到的结果/查询。例如,如果我想获取GroupID在x,y,z中的实体,但是如果它为null则不包括OR中的用户ID。
我可以有一个3案例的IF语句来做到这一点,但似乎应该有另一种方式来实现它吗? (如果userID == null,只有.Add(.. In(GroupID)..),如果groupIDs == null,等等。)
我显然不太熟悉ICriteria API,所以我不确定它的功能是什么。
答案 0 :(得分:1)
您可以像这样使用Disjunction:
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);