I have a NHibernate search function where I receive integers and want to return results where at least the beginning coincides with the integers, e.g.
received integer: 729
returns: 729445, 7291 etc.
The database column is of type int, as is the property "Id" of Foo.
But
int id = 729;
var criteria = session.CreateCriteria(typeof(Foo))
criteria.Add(NHibernate.Criterion.Expression.InsensitiveLike("Id", id.ToString() + "%"));
return criteria.List<Foo>();
does result in an error (Could not convert parameter string to int32). Is there something wrong in the code, a work around, or other solution?
int id = 729; var criteria = session.CreateCriteria(typeof(Foo)) criteria.Add(NHibernate.Criterion.Expression.InsensitiveLike("Id", id.ToString() + "%")); return criteria.List<Foo>();
How about this:
int id = 729; var criteria = session.CreateCriteria(typeof(Foo)) criteria.Add(Expression.Like(Projections.Cast(NHibernateUtil.String, Projections.Property("Id")), id.ToString(), MatchMode.Anywhere)); return criteria.List<Foo>();
原文地址:https://www.cnblogs.com/ulex/p/12360549.html
时间: 2024-11-05 23:36:36