在SQL中我可以写
SELECT blah FROM Clients Where @p1 Like '%'+lastname+'%'
如何用Nhibernate中的CreateCriteria来表示这一点?
我试过s.CreateCriteria<Client>.Add(Restrictions.Where<Client>(c => "something".Contains(c.LastName))
但是有个错误
NHibernate.Impl.ExpressionProcessor.ProcessCustomMethodCall(MethodCallExpression System.Exception:未识别的方法调用: System.String:Boolean包含(System.String)\r\n在System.String methodCallExpression)
我也试过
s.CreateCriteria<Client>.Add(Restrictions.Where<Client>(c => "something".IndexOf(c.LastName) != -1))
但得到
“类型为'TrinityFinance.Data.Entities.Client‘的变量'c’从作用域引用,但未定义”
注意到这里的顺序很重要。
@p1 Like '%'+lastname+'%'
与
lastname Like '%'+@p1+'%'
发布于 2012-01-04 15:02:20
多亏了我的一个朋友我解决了我的问题。
var searchCriteria = GetSession().CreateCriteria<Client>(); searchCriteria.Add(Expression.Sql(string.Format("'{0}' like '%' + {1} + '%'", p.ClientInputText,p.DbField)));
var results = searchCriteria.List<Client>();
发布于 2012-01-04 15:45:33
s.CreateCriteria<Client>().Add(
Restrictions.InsensitiveLike( "LastName", "something", MatchMode.Anywhere))发布于 2015-04-23 13:38:02
对于不区分大小写的%,如%搜索
Criteria criteria = session.createCriteria(Any.class);
criteria.add(Restrictions.ilike(propertyName, value, MatchMode.ANYWHERE);
criteria.list();https://stackoverflow.com/questions/8728796
复制相似问题