我在ASP.NET API 2 Controller 中使用[EnableQuery]
(System.Web.Http.OData)来启用OData v3筛选/排序/分页。我注意到使用$orderby
子句返回的数据按以下方式排序(以下是一些示例-它们是字符串,不一定具有模式):
LoadTest1000_1
LoadTest1000_10
LoadTest1000_1000
LoadTest1000_2
LoadTest1000_20
[etc]
当我需要自然排序时:
LoadTest1000_1
LoadTest1000_2
LoadTest1000_10
LoadTest1000_20
LoadTest1000_1000
LoadTest1000_2000
[etc]
如何启用这种排序?我可以使用任何扩展点来提供自己的排序逻辑吗?
最佳答案
我认为没有一个很好的方法可以做到这一点。首先,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
无论您是随机的互联网陌生人,我祝您成功!
关于c# - OData $ orderby查询中的自然排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43687805/