我有一个启用了 odata 查询选项的 asp.net web api 控制器。控制器如下:
[Queryable(PageSize = 10)]
public IQueryable<MyDTO> Get(string Id)
{
//some code here
}
从Queryable
属性中可以明显看出,如果有超过 10 条记录,此控制器总是一次返回 10 条记录MyDTO's
。
如何找出哪些 10 条记录已返回或哪些记录已被 odata 查询选项过滤掉?
我有一个启用了 odata 查询选项的 asp.net web api 控制器。控制器如下:
[Queryable(PageSize = 10)]
public IQueryable<MyDTO> Get(string Id)
{
//some code here
}
从Queryable
属性中可以明显看出,如果有超过 10 条记录,此控制器总是一次返回 10 条记录MyDTO's
。
如何找出哪些 10 条记录已返回或哪些记录已被 odata 查询选项过滤掉?
所有 pageSize 所做的都是Take
在首先应用传入的 $filter、$orderby、$skip、$top 之后返回的可查询操作。如果要对应用查询后返回的项目进行后处理,可以将ODataQueryOptions<MyDTO>
其作为输入并手动将其应用到IQueryable
public IQueryable<MyDTO> Get(string Id, ODataQueryOptions<MyDTO> queryOptions)
{
IQueryable<MyDTO> allMyDTOs = GetMyDTOs(Id);
ODataQuerySettings settings = new ODataQuerySettings() { PageSize = 10 };
IQueryable<MyDTO> appliedMyDTOs = queryOptions.ApplyTo(allMyDTOs, settings) as IQueryable<MyDTO>;
return appliedMyDTOs;
}
这里有一些样本。
http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options