Nhibernate:使用Expression

时间:2010-05-17 17:45:03

标签: nhibernate

使用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...

1 个答案:

答案 0 :(得分:1)

我不确定.NET版本,但是hybernate在HQL中支持有限的转换(例如 cast(... as ...))。我认为您需要将值转换为字符串,然后应用“ Like ”子句。应该能够在HQL中完成所有这些。或者,您可以使用SQL表达式(例如 Expression.Sql(...))来执行此操作,并使用T-SQL执行相同的操作。