如何将NHibernate查询按照相似性写入订单?
从这个例子
session.Linq<Theater>()
.Where(x => x.Name.StartsWith("test") && x.Name.EndsWith("test");返回结果的顺序怎么能按“相似”排序呢?
即
的结果集
如果我要搜索“Doe”,我会得到(按这个顺序)的结果。
提前谢谢。
发布于 2015-12-03 19:41:10
据我所知,Where子句首先出现,Order在结果集中执行,因此为了按照它们的“相似性”列出项目,您需要在通过自己重新排序得到结果集之后,以扩展的查询格式(而不是LINQ)或在C#中执行一些花哨的序列检查。
这完全取决于你对相似性的定义。默认情况下,升序或降序是在字典中列出字符串的方式。如果希望将其基于类似‘%word’的出现位置的索引,则仍然需要在Order语句中分别指定该标准。
您可以使用子字符串并将它们放入大小写并按这些情况进行排序。
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在这里:Find all strings that share at least X characters, order by likeness
编辑:创建条件可能有助于使这个工作在LINQ,但它更容易使用扩展语法IMO。nhibernate CreateCriteria wildcard Like when
https://stackoverflow.com/questions/34074225
复制相似问题