Reputation: 53
How do I restrict a query by the length of a string property? eg. something like:
NHSession.QueryOver<Customer>()
.Where(p => p.RegistryCode.Length == 8)
Upvotes: 5
Views: 1186
Reputation: 195
Instead of "NHibernateUtil.String" i should use this "NHibernateUtil.Int16" type, because a 'length' parameter should always be a number and not a String.
Something like this:
NHSession.QueryOver<Customer>()
.Where(
Restrictions.Eq(
Projections.SqlFunction("length", NHibernateUtil.Int16,
Projections.Property<Customer>(x => x.RegistryCode)),
8
)
)
Upvotes: 1
Reputation: 68420
Something like this may do the trick
NHSession.QueryOver<Customer>()
.Where(
Restrictions.Eq(
Projections.SqlFunction("length", NHibernateUtil.String,
Projections.Property<Customer>(x => x.RegistryCode)),
8
)
)
Upvotes: 5