And*_*est 5 iqueryable deferred-execution asp.net-web-api
我正在开发一个使用新Web API的项目,我注意到有人从Get方法返回IQueryable <T>.
我的理解是IQueryable对于提高性能(延迟执行)很有用,但我不认为HTTP连接另一端的客户端能够利用它.
我的直觉告诉我,这应该是IEnumberable <T>.我这是对的吗?
IQueryable<T>可以通过在查询字符串中传递一些类似odata的参数($ top,$ skip,$ filter,$ orderby)来"查询" 返回方法的响应.例如,如果您的资源可以在.../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
Run Code Online (Sandbox Code Playgroud)
请注意,在beta版本中,任何IQueryable<T>自动返回的操作都会添加此"查询"支持.在最新的位(来自codeplex),您需要手动向操作添加[Queryable]属性以启用此行为.
如果你不想要查询行为,那么是的,返回IEnumerable<T>就好了.
| 归档时间: |
|
| 查看次数: |
888 次 |
| 最近记录: |