nhibernate CreateCriteria通配符就像什么时候 [英] nhibernate CreateCriteria wildcard Like when
问题描述
在SQL中,我可以编写
In SQL I can write
SELECT blah FROM Clients
Where @p1 Like '%'+lastname+'%'
SELECT blah FROM Clients
Where @p1 Like '%'+lastname+'%'
如何在Nhibernate中用CreateCriteria表示这一点?
How do I represent this with CreateCriteria in Nhibernate?
我尝试了s.CreateCriteria<Client>.Add(Restrictions.Where<Client>(c => "something".Contains(c.LastName))
但出现错误
System.Exception:无法识别的方法调用:NHibernate.Impl.ExpressionProcessor.ProcessCustomMethodCall(MethodCallExpression methodCallExpression)处的System.String:Boolean Contains(System.String)\ r \ n
System.Exception: Unrecognised method call: System.String:Boolean Contains(System.String)\r\n at NHibernate.Impl.ExpressionProcessor.ProcessCustomMethodCall(MethodCallExpression methodCallExpression)
我也尝试过
s.CreateCriteria<Client>.Add(Restrictions.Where<Client>(c => "something".IndexOf(c.LastName) != -1))
但是得到
从范围"引用的类型为'TrinityFinance.Data.Entities.Client'的变量'c',但未定义"
"variable 'c' of type 'TrinityFinance.Data.Entities.Client' referenced from scope '', but it is not defined"
请注意,订单在这里很重要.
@p1 Like '%'+lastname+'%'
与
lastname Like '%'+@p1+'%'
推荐答案
感谢一位朋友,我已经解决了我的问题.
Thanks to a friend I've solved my issue.
var searchCriteria = GetSession().CreateCriteria<Client>();
searchCriteria.Add(Expression.Sql(string.Format("'{0}' like '%' + {1} + '%'", p.ClientInputText,p.DbField)));
var results = searchCriteria.List<Client>();
这篇关于nhibernate CreateCriteria通配符就像什么时候的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!