Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate Linq-Like相似顺序_C#_Linq_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# NHibernate Linq-Like相似顺序

C# NHibernate Linq-Like相似顺序,c#,linq,nhibernate,fluent-nhibernate,C#,Linq,Nhibernate,Fluent Nhibernate,如何按照相似性将NHibernate查询写入订单 从这个例子中 session.Linq() 其中(x=>x.Name.StartsWith(“测试”)和&x.Name.EndsWith(“测试”); 资料来源: 返回结果的顺序如何按“相似性”排序 i、 e 结果集为 无名氏 简·多尔 贾妮丝·曼德 如果我要搜索“Doe”,我会得到(按此顺序)的结果 无名氏 简·多尔 提前感谢。据我所知,Where子句首先出现,Order By在结果集上执行,因此,为了按项目的“相似性”列出项目,您

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

从这个例子中

session.Linq()
其中(x=>x.Name.StartsWith(“测试”)和&x.Name.EndsWith(“测试”);
资料来源:

返回结果的顺序如何按“相似性”排序

i、 e

结果集为

  • 无名氏
  • 简·多尔
  • 贾妮丝·曼德
如果我要搜索“Doe”,我会得到(按此顺序)的结果

  • 无名氏
  • 简·多尔

提前感谢。

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

这完全取决于您对相似性的定义。默认情况下,升序或降序是字符串在字典中的列出方式。如果您希望基于类似“%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
请看这里:

在这里:

编辑: 创建条件可能有助于在LINQ中实现这一点,但它更易于使用扩展语法。

试试soundex func
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