Reputation: 9784
Using nHibernate, I would like to query on an integer datatype, but its always returning the exact match.
How could I write an expression that returns a list starting with the number entered?
right now I am using it as: (clientNum is a long)
crit.Add(Expression.Like("ClientNumber", clientNum)); //this always gives me exact matches only
so I tried the following, but its complainging of a wroing type (its only expecting a string)
crit.Add(Expression.Like("ClientNumber", clientNum, MatchMode.Start));
Update: Also I tried the clientNum.ToString() but I get a db exception saying invalid type.
I can use the sql as follows to get what I want, but how do I do this in nHibernate??
SELECT * FROM ClientTable
WHERE clientNum LIKE '3%' --incase I wanted a list that starts with 3...
Upvotes: 0
Views: 371
Reputation: 3796
I am not sure about the .NET version, but hybernate supported limited casting (e.g. cast (... as ...)) in HQL. I think you would need to cast the value to a string and then apply your 'Like' clause. Should be able to do this all in HQL. Alternatively, you can do it using the SQL Expressions (ex. Expression.Sql(...)) and do the same thing using T-SQL.
Upvotes: 1