5

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

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

私の腸は、これは代わりに IEnumberable<T> であるべきだと言っています。私はこれについて正しいですか?

4

1 に答える 1

8

返されるメソッドへの応答IQueryable<T>は、クエリ文字列 ($top、$skip、$filter、$orderby) でいくつかの odata のようなパラメーターを渡すことによって「クエリ」できます。たとえば、リソースが .../api/People にある場合は、それらのリクエストを送信できます。これにより、サーバーは異なるデータを返します。

.../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>自動的に返されるすべての操作に、この「クエリ」サポートが追加されていることに注意してください。[Queryable]最新のビット (codeplex から) では、この動作を有効にするには、操作に属性を手動で追加する必要があります。

そのクエリ動作が必要ない場合は、はい、戻っても問題ありませんIEnumerable<T>

于 2012-04-09T19:56:35.987 に答える