[英]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.