QueryOver<X>().Where(x=> x.P1.IsNull() || x.P2.IsNull() || x.P3.IsNull() || x.P4.IsNull()).List();
On Fri, Apr 29, 2011 at 8:07 PM, Guido Tapia <[email protected]> wrote: > Hi Richard, I'm talking about the NHibernate.Criterion.Restrictions API. > If I want to have a query like: 'SELECT FROM XXX WHERE FIELD1 is null OR > FIELD2 is null OR FIELD3 is null OR FIELD4 is null' I need to do ugliness > like this (Note: assume these are aliases): > > session.QueryOver<XXX>().Where(Restrictions.Or( > Restrictions.On<XXX>(x => x.FIELD1).IsNull, > Restrictions.Or( > Restrictions.Or( > Restrictions.On<XXX>(x => se.FIELD2).IsNull, > Restrictions.On<XXX>(x => se.FIELD3).IsNull, > ), Restrictions.On<XXX>(x => se.FIELD4).IsNull > ) > )).List(); > > > It does not need to be so ugly, it could be: > > session.QueryOver<XXX>().Where(Restrictions.Or( > Restrictions.On<XXX>(x => x.FIELD1).IsNull, > Restrictions.On<XXX>(x => x.FIELD2).IsNull, > Restrictions.On<XXX>(x => x.FIELD3).IsNull, > Restrictions.On<XXX>(x => x.FIELD4).IsNull)).List(); > > All that is needed for this is that the Restrictions.Or (and > Restrictions.AND) API allow for an unbounded params array rather than a > fixed 2 parameters (lhs, rhs). > > Note: I wrote the examples out without testing (in this post) them so I'm > sure they are buggy but I think they are clear enough to explain what I > mean. > > Thanks All > > Guido > > -- > You received this message because you are subscribed to the Google Groups > "nhusers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > -- Fabio Maulo -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.
