如何通过字符串属性的长度限制查询?例如。是这样的:NHibernate QueryOver受字符串长度限制
NHSession.QueryOver<Customer>()
.Where(p => p.RegistryCode.Length == 8)
如何通过字符串属性的长度限制查询?例如。是这样的:NHibernate QueryOver受字符串长度限制
NHSession.QueryOver<Customer>()
.Where(p => p.RegistryCode.Length == 8)
像这样的事情可以做的伎俩
NHSession.QueryOver<Customer>()
.Where(
Restrictions.Eq(
Projections.SqlFunction("length", NHibernateUtil.String,
Projections.Property<Customer>(x => x.RegistryCode)),
8
)
)
谢谢,工作,虽然我不得不使用“长度”而不是“len”,按照[这个答案](http://stackoverflow.com/questions/9246626/nhibernate-support-the-function-len) –
@ dänjel:很高兴它的工作,解决了我的答案;) –
而不是“NHibernateUtil.String”我应该用这种“NHibernateUtil.Int16”型,因为“长度”参数应该始终是一个数字而不是一个字符串。
事情是这样的:
NHSession.QueryOver<Customer>()
.Where(
Restrictions.Eq(
Projections.SqlFunction("length", NHibernateUtil.Int16,
Projections.Property<Customer>(x => x.RegistryCode)),
8
)
)
为什么这应该更好?请解释。 – Alexander
在我看来,长度返回一个int而不是一个字符串。但它是一个nhibernate sql动作,它并不重要。 –
如果添加了一些细节你的问题这将是很好。 – Jost
不知道我可以添加什么额外的细节,这对我来说似乎是一个非常简单的问题? –
是的,你的问题不是太重;-) - 但它包含诸如'customer'和一个常数(例如'8'),这些都没有进一步解释。不要担心,因为它是好的,你得到了你的答案。 – Jost