gt124
gt124

Reputation: 1258

Nhibernate Queryover Case Insensitive IsIn

I've got this example code...

Result = session.QueryOver<Lfee_Exc>().WhereRestrictionOn(x => x.FirstName)
.IsIn(ListOfFirstNames).List();

Is there any way to make this case insenstive or upper case x.ArNumber for my case sensitive Oracle server?

Upvotes: 6

Views: 5240

Answers (2)

Andy B.
Andy B.

Reputation: 147

Currently using NHibernate 5.3 and this worked for me.

First make ListOfFirstNames upper case and then use ProjectionExtension Upper() from NHibernate.Criterion namespace in the query.

using NHibernate.Criterion;

var upperNames = ListOfFirstNames.Select(name => name.ToUpper()).ToArray<object>();

var result = session.QueryOver<Lfee_Exc>()
    .Where(x => x.FirstName.Upper().IsIn(upperNames))
    .List();

Upvotes: 0

Diego Mijelshon
Diego Mijelshon

Reputation: 52735

Convert ListOfFirstNames to upercase and then:

session.QueryOver<Lfee_Exc>()
    .Where(Restrictions.In(Projections.SqlFunction(
                              "upper", NHibernateUtil.String,
                               Projections.Property<Lfee_Exc>(x => x.FirstName)),
                           ListOfFirstNames))

Upvotes: 11

Related Questions