我有一个asp.net web api控制器,我启用了odata查询选项。控制器如下:
[Queryable(PageSize = 10)]
public IQueryable<MyDTO> Get(string Id)
{
//some code here
}
从Queryable
属性可以明显看出,如果有超过10个MyDTO's
,则此控制器一次总是返回10条记录。
如何找出已退回的10条记录或已通过odata查询选项过滤掉哪些记录?
答案 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