在SQL中我可以写
SELECT blah FROM Clients
Where @p1 Like '%'+lastname+'%'
如何用Nhibernate中的CreateCriteria表示这个?
我试过了s.CreateCriteria<Client>.Add(Restrictions.Where<Client>(c => "something".Contains(c.LastName))
但收到错误
System.Exception:无法识别的方法调用:System.String:Boolean包含(System.String)\ r \ n在NHibernate.Impl.ExpressionProcessor.ProcessCustomMethodCall(MethodCallExpression 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+'%'
答案 0 :(得分:12)
s.CreateCriteria<Client>().Add(
Restrictions.InsensitiveLike( "LastName", "something", MatchMode.Anywhere))
答案 1 :(得分:1)
感谢朋友,我已经解决了我的问题。
var searchCriteria = GetSession().CreateCriteria<Client>();
searchCriteria.Add(Expression.Sql(string.Format("'{0}' like '%' + {1} + '%'", p.ClientInputText,p.DbField)));
var results = searchCriteria.List<Client>();
答案 2 :(得分:0)
Case-Insensitive%Like%Search
Criteria criteria = session.createCriteria(Any.class);
criteria.add(Restrictions.ilike(propertyName, value, MatchMode.ANYWHERE);
criteria.list();