使用nHibernate,我想查询整数数据类型,但它总是返回完全匹配。
如何编写一个表达式,返回以输入数字开头的列表?
现在我用它作为: (clientNum很长)
crit.Add(Expression.Like("ClientNumber", clientNum)); //this always gives me exact matches only
所以我尝试了下面的内容,但是它抱怨了一种狡猾的类型(它唯一期待一个字符串)
crit.Add(Expression.Like("ClientNumber", clientNum, MatchMode.Start));
更新:我也试过了clientNum.ToString()但是我得到了一个db异常,说的是无效类型。
我可以按如下方式使用sql来获取我想要的内容,但是如何在nHibernate中执行此操作?
SELECT * FROM ClientTable
WHERE clientNum LIKE '3%' --incase I wanted a list that starts with 3...
答案 0 :(得分:1)
我不确定.NET版本,但是hybernate在HQL中支持有限的转换(例如 cast(... as ...))。我认为您需要将值转换为字符串,然后应用“ Like ”子句。应该能够在HQL中完成所有这些。或者,您可以使用SQL表达式(例如 Expression.Sql(...))来执行此操作,并使用T-SQL执行相同的操作。