OData $ orderby查询中的自然排序

时间:2017-04-28 19:41:47

标签: c# sorting asp.net-web-api2 odata

我在ASP.NET API 2控制器中使用$orderby(System.Web.Http.OData)来启用OData v3过滤/排序/分页。我注意到使用LoadTest1000_1 LoadTest1000_10 LoadTest1000_1000 LoadTest1000_2 LoadTest1000_20 [etc] 子句会返回按如下方式排序的数据(以下是一些示例 - 它们是字符串,并且不一定要有模式):

LoadTest1000_1
LoadTest1000_2
LoadTest1000_10
LoadTest1000_20
LoadTest1000_1000
LoadTest1000_2000
[etc]

当我需要自然分类时:

ignore:
  sha:
    - 2a4757b270f7946122ba6622e3d2e72b2b2808a7
    - 3e91c23637b97bc4e4c3234f93ffd03e6af70e8c

如何启用此类排序?我可以使用任何扩展点来提供自己的排序逻辑吗?

1 个答案:

答案 0 :(得分:1)

我不认为有一个很好的方法可以做到这一点。 SQL Server首先没有内置对自然排序的支持。

也就是说,您可以使用自定义oData函数/动作。对于v3,请查看https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/odata-actions

否则,对于v4 https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/odata-actions-and-functions

无论你是随机的网络陌生人,我祝你成功!