首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate线性类序的相似性

NHibernate线性类序的相似性
EN

Stack Overflow用户
提问于 2015-12-03 19:11:40
回答 1查看 128关注 0票数 0

如何将NHibernate查询按照相似性写入订单?

从这个例子

代码语言:javascript
复制
session.Linq<Theater>()
.Where(x => x.Name.StartsWith("test") && x.Name.EndsWith("test");

来源:NHibernate.Linq LIKE

返回结果的顺序怎么能按“相似”排序呢?

的结果集

  • 无名氏
  • 简·多尔
  • 詹妮丝·曼德

如果我要搜索“Doe”,我会得到(按这个顺序)的结果。

  • 无名氏
  • 简·多尔

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-12-03 19:41:10

据我所知,Where子句首先出现,Order在结果集中执行,因此为了按照它们的“相似性”列出项目,您需要在通过自己重新排序得到结果集之后,以扩展的查询格式(而不是LINQ)或在C#中执行一些花哨的序列检查。

这完全取决于你对相似性的定义。默认情况下,升序或降序是在字典中列出字符串的方式。如果希望将其基于类似‘%word’的出现位置的索引,则仍然需要在Order语句中分别指定该标准。

您可以使用子字符串并将它们放入大小写并按这些情况进行排序。

代码语言:javascript
复制
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: Order by like?

在这里:Find all strings that share at least X characters, order by likeness

编辑:创建条件可能有助于使这个工作在LINQ,但它更容易使用扩展语法IMO。nhibernate CreateCriteria wildcard Like when

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34074225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档