有条件地添加限制
本文关键字:添加 有条件 | 更新日期: 2023-09-27 18:11:44
我有非常复杂的标准。让我们看看下面的标准:
new List < ICriterion > {
Restrictions.Not(Restrictions.Eq("Name", user.Name)),
Restrictions.Or(
Restrictions.And(
Restrictions.And(
Restrictions.Eq("Status", user.Status))
...
))
...
};
但是我需要根据一个设置有条件地添加一个限制。
if(Setting.SomeSettings)
{
new List < ICriterion > {
Restrictions.Not(Restrictions.Eq("Name", user.Name)),
Restrictions.Or(
Restrictions.And(
Restrictions.And(
**//new restriction**
Restrictions.Eq("Some", user.Some))
Restrictions.Eq("Status", user.Status))
...
))
...
};
}
else
{
new List < ICriterion > {
Restrictions.Not(Restrictions.Eq("Name", user.Name)),
Restrictions.Or(
Restrictions.And(
Restrictions.And(
Restrictions.Eq("Status", user.Status))
...
))
...
};
}
如何避免这种重复?
您可以将条件作为变量使用,例如
ICriterion criterion;
if(Setting.SomeSettings)
{
criterion = Restrictions.And(
**//new restriction**
Restrictions.Eq("Some", user.Some))
Restrictions.Eq("Status", user.Status))
...
));
}
else
{
criterion = Restrictions.And(
Restrictions.And(
Restrictions.Eq("Status", user.Status))
...
));
}
new List < ICriterion > {
Restrictions.Not(Restrictions.Eq("Name", user.Name)),
Restrictions.Or(
Restrictions.And(
criterion
...
};