如何找出Queryable属性过滤掉哪些记录?

时间:2013-07-25 01:11:33

标签: asp.net-mvc-4 asp.net-web-api odata

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

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

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

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

2 个答案:

答案 0 :(得分:0)

所有pageSize都会对可查询的内容Take执行{$ 3}}。在首先应用传入的$ filter,$ orderby,$ skip,$ top之后返回您的操作。如果您要对应用查询后返回的项目进行后期处理,可以将ODataQueryOptions<MyDTO>作为输入,并在IQueryable上手动应用

答案 1 :(得分: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