[英]NHibernate Linq Like Order By Likeness
NHibernate查詢如何按相似性順序編寫?
從這個例子
session.Linq<Theater>()
.Where(x => x.Name.StartsWith("test") && x.Name.EndsWith("test");
資料來源: NHibernate.Linq LIKE
返回的結果的順序如何由“喜歡”排序?
即
結果集
如果我搜索“ Doe”,我將得到(按此順序)的結果
提前致謝。
據我所知,Where子句首先出現,並且Order By在結果集上執行,因此,為了按項目的“相似度”列出項目,您需要以擴展的查詢格式進行一些復雜的順序檢查(而不是LINQ)或在C#中通過您自己重新排序來獲得結果集。
這完全取決於您對相似性的定義。 默認情況下,升序或降序是在字典中列出字符串的方式。 如果要基於LIKE'%word%'的出現位置的索引,則仍需要在Order By語句中單獨指定該條件。
您可以使用子字符串,並將其放入案例並按案例排序。
order by case
when SUBSTRING(field,1,Len(field)) LIKE 'word%' then 1
when SUBSTRING(field,2,Len(field)) LIKE 'word%' then 2
when SUBSTRING(field,3,Len(field)) LIKE 'word%' then 3
...
end
參見此處: Mysql:按喜歡排序?
編輯:創建條件對於在LINQ中進行此工作可能會有所幫助,但它更易於使用擴展語法IMO。 nhibernate CreateCriteria通配符就像什么時候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.