使用Or运算符而不是And,向查询添加两个子查询?

时间:2015-02-03 11:09:26

标签: c# nhibernate queryover

我试过这个

incidentSubquery.WithSubquery.WhereProperty(x => x.Id).In (witnessTypesSubquery).
                 WithSubquery.WhereProperty(x => x.Id).NotIn(witnessTypesSubquery);

但是两个子查询之间的运算符是And运算符,我怎样才能创建它或运算符而不是和。

1 个答案:

答案 0 :(得分:3)

一种方法可能是:

incidentSubquery.Where
(
  Restrictions.Disjunction()
    .Add(Subqueries.WhereProperty<MyEntity>(x => x.Id).In(witnessTypesSubquery))
    .Add(Subqueries.WhereProperty<MyEntity>(x => x.Id).NotIn(witnessTypesSubquery))
);

我们可以使用Restrictions.Disjunction().Add(...).Add(...)尽可能多地加入OR语句。

简化版可以使用Restrictions.Or(A, B)(只有两个语句)