C# NHibernate Linq-Like相似顺序
如何按照相似性将NHibernate查询写入订单 从这个例子中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在结果集上执行,因此,为了按项目的“相似性”列出项目,您
session.Linq()
其中(x=>x.Name.StartsWith(“测试”)和&x.Name.EndsWith(“测试”);
资料来源:
返回结果的顺序如何按“相似性”排序
i、 e
结果集为
- 无名氏
- 简·多尔
- 贾妮丝·曼德
- 无名氏
- 简·多尔
提前感谢。据我所知,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