如何通过相似性来编写NHibernate查询?
从这个例子
session.Linq<Theater>()
.Where(x => x.Name.StartsWith("test") && x.Name.EndsWith("test");
如何返回结果的顺序由'相似'排序?
即。
结果集
如果我要搜索'Doe',我会得到(按此顺序)的结果
提前致谢。
答案 0 :(得分:0)
据我所知,Where子句首先出现,Order By在结果集上执行,所以为了按照“likeness”列出项目,你需要在扩展中做一些花哨的序列检查查询格式(不是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
在这里: Find all strings that share at least X characters, order by likeness
编辑: 创建标准可能有助于在LINQ中使用它,但它更容易使用扩展语法IMO。 nhibernate CreateCriteria wildcard Like when