2012-04-09 3 views
3

私は新しいWeb APIを使用するプロジェクトに取り組んでおり、Getメソッドから誰かがIQueryable <T>を返すことに気付きました。ASP.NET Web APIメソッドがIQueryable <T>を返すのは意味がありますか?

私の理解では、IQueryableはパフォーマンス(遅延実行)を改善するのに役立ちますが、HTTP接続の相手側のクライアントはそれを利用できるとは思いません。

私は、これはIEnumberable <T>でなければならないと言っています。私はこれについて正しいですか?

答えて

7

IQueryable<T>を返すメソッドに対する応答は、クエリ文字列($ top、$ skip、$ filter、$ orderby)にいくつかのodataのようなパラメータを渡すことで "照会"できます。たとえば、あなたのリソースは.../API /人々で見つけることができるならば、あなたは、サーバーが異なるデータを返すために、原因となる、これらの要求を送信することができます:

.../api/People?$top=10     ==> return only the first 10 elements 
.../api/People?$skip=10&$top=5   ==> return the 11th to 15th elements 
.../api/People?$filter=Name%20eq%20'John' ==> Only return people named "John" 
.../api/People?$orderby=Name&$top=10  ==> return the first 10 elements, ordered by name 

お知らせベータ版のリリースでそのいずれかの操作いますIQueryable<T>に自動的にこの「クエリ」サポートが追加されています。最新のビット(codeplexから)で、この動作を有効にする操作に[Queryable]属性を手動で追加する必要があります。

このクエリ動作をしたくない場合は、返信IEnumerable<T>は問題ありません。

+0

MVC Web APIのリリース版では、この 'Queryable'属性が見つからないようです。 IQeryable を今すぐ実装するにはどうすればよいですか? – Netricity

+0

NumGetから 'Microsoft.AspNet.WebApi.OData -Pre'パッケージをインストールする必要がありました。 – Netricity

関連する問題