0

我有一个启用了 odata 查询选项的 asp.net web api 控制器。控制器如下:

[Queryable(PageSize = 10)]
public IQueryable<MyDTO> Get(string Id)
{
  //some code here
}

Queryable属性中可以明显看出,如果有超过 10 条记录,此控制器总是一次返回 10 条记录MyDTO's

如何找出哪些 10 条记录已返回或哪些记录已被 odata 查询选项过滤掉?

4

2 回答 2

0

所有 pageSize 所做的都是Take在首先应用传入的 $filter、$orderby、$skip、$top 之后返回的可查询操作。如果要对应用查询后返回的项目进行后处理,可以将ODataQueryOptions<MyDTO>其作为输入并手动将其应用到IQueryable

于 2013-07-25T16:57:05.097 回答
0
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

于 2014-03-18T06:19:24.657 回答