首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nhibernate CreateCriteria通配符,如

nhibernate CreateCriteria通配符,如
EN

Stack Overflow用户
提问于 2012-01-04 14:51:45
回答 3查看 6.9K关注 0票数 2

在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+'%'

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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>();

票数 1
EN

Stack Overflow用户

发布于 2012-01-04 15:45:33

代码语言:javascript
复制
s.CreateCriteria<Client>().Add(
      Restrictions.InsensitiveLike( "LastName", "something", MatchMode.Anywhere))
票数 12
EN

Stack Overflow用户

发布于 2015-04-23 13:38:02

对于不区分大小写的%,如%搜索

代码语言:javascript
复制
 Criteria criteria = session.createCriteria(Any.class);
 criteria.add(Restrictions.ilike(propertyName, value, MatchMode.ANYWHERE);
 criteria.list();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8728796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档