2017-04-22 7 views
3

私はデータを "自然に"ソートする良い方法がIComparer @Natural Sort Order in C#と似ています。次のようなのODataクエリがデータを返す使用して、私は次のように読み込むコレクションを持っている場合は、自然にWCFのIQueryable文字列をソート

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"}] 

:私の場合、私はこのような何かを行くクラスを持っています上記と同じ順序、私は実際にデータを希望しながら、

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

これを一般的に処理する最良の方法は、自然に文字列をソートする 'IQueryable'の実装を提供することです。私がそれを得ることができれば、これを詳しく説明する答えを提供します。 –

答えて

0

これは、Buildium.ComparedQueryableと呼ばれるプレリリースのNuGetパッケージを介して可能になりました。あなたはそれにAsNaturalQueryableが自然にソートされたコレクションを返します呼び出し、メモリに保存されているIQueryableを持って考えると

Install-Package Buildium.ComparedQueryable -Version 0.1.3 

using ComparedQueryable; 

public IHttpActionResult Get() 
{ 
    IEnumerable<Widget> widgets = this.service.GetWidgets(); 
    return widgets.AsNaturalQueryable(); 
} 
関連する問題