如何通過字符串屬性的長度限制查詢?例如。是這樣的: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