我有一种很好的方法可以“自然地”对数据进行排序,IComparer
类似于@ Natural Sort Order in C#的答案。就我而言,我有一个类似这样的课程:
public class Widget
{
public int Id { get; set; }
public string Name { get; set; }
}
如果我有一个如下所示的集合,
[{Id: 1, Name: "2 N. Street"},{Id: 2, Name: "33 N. Street"},{Id: 3, Name: "4 N. Street"}]
使用如下所示的OData查询将按照与上面相同的顺序返回数据,
http://www.example.com/Widget.svc/GetWidgets?$orderby=Name
虽然我实际上希望数据“自然地”排序如下:
[{Id: 1, Name: "2 N. Street"},{Id: 3, Name: "4 N. Street"},{Id: 2, Name: "33 N. Street"}]
有一种很好的方法可以自定义WCF服务,使任何尝试按任何字符串属性排序的查询“自然地”对数据进行排序吗?
答案 0 :(得分:0)
现在可以通过名为Buildium.ComparedQueryable的预发布NuGet包来实现。
Install-Package Buildium.ComparedQueryable -Version 0.1.3
鉴于您在内存中存储了IQueryable
,在其上调用AsNaturalQueryable
将自然地返回收集的集合。
using ComparedQueryable;
public IHttpActionResult Get()
{
IEnumerable<Widget> widgets = this.service.GetWidgets();
return widgets.AsNaturalQueryable();
}