私は新しい Web API を使用するプロジェクトに取り組んでおり、誰かが Get メソッドから IQueryable<T> を返していることに気付きました。
私の理解では、IQueryable はパフォーマンスの向上 (遅延実行) に役立ちますが、HTTP 接続の反対側のクライアントがそれを利用できるとは思いません。
私の腸は、これは代わりに IEnumberable<T> であるべきだと言っています。私はこれについて正しいですか?
私は新しい Web API を使用するプロジェクトに取り組んでおり、誰かが Get メソッドから IQueryable<T> を返していることに気付きました。
私の理解では、IQueryable はパフォーマンスの向上 (遅延実行) に役立ちますが、HTTP 接続の反対側のクライアントがそれを利用できるとは思いません。
私の腸は、これは代わりに IEnumberable<T> であるべきだと言っています。私はこれについて正しいですか?
返されるメソッドへの応答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>
。