簡體   English   中英

NHibernate Linq喜歡按順序排序

[英]NHibernate Linq Like Order By Likeness

NHibernate查詢如何按相似性順序編寫?

從這個例子

session.Linq<Theater>()
.Where(x => x.Name.StartsWith("test") && x.Name.EndsWith("test");

資料來源: NHibernate.Linq LIKE

返回的結果的順序如何由“喜歡”排序?

結果集

  • 約翰·杜
  • 簡·多爾
  • 珍妮絲·曼德(Janice Mander)

如果我搜索“ 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:按喜歡排序?

在這里: 找到所有至少共享X個字符的字符串(按相似度排序)

編輯:創建條件對於在LINQ中進行此工作可能會有所幫助,但它更易於使用擴展語法IMO。 nhibernate CreateCriteria通配符就像什么時候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM