NHibernate Linq喜欢按顺序排列

时间:2015-12-03 19:11:40

标签: c# linq nhibernate fluent-nhibernate

如何通过相似性来编写NHibernate查询?

从这个例子

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

来源:NHibernate.Linq LIKE

如何返回结果的顺序由'相似'排序?

即。

结果集

  • John Doe
  • Jane Doel
  • Janice Mander

如果我要搜索'Doe',我会得到(按此顺序)的结果

  • John Doe
  • Jane Doel

提前致谢。

1 个答案:

答案 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

见这里: Mysql: Order by like?

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

编辑: 创建标准可能有助于在LINQ中使用它,但它更容易使用扩展语法IMO。 nhibernate CreateCriteria wildcard Like when