使用URL参数预过滤OData(

时间:2016-12-22 17:02:16

标签: c# asp.net-web-api2 odata

我在服务架构上使用odata和web API。 我想在返回IQuerable之前使用URL中的参数进行一些过滤。可能这意味着我将API路由与odata路由混合在一起。一个不起作用的例子,只是想知道我想要实现的目标:

https://www.reddit.com/api/v1/me

可以这样做吗?怎么样? 感谢

1 个答案:

答案 0 :(得分:2)

添加System.Web.OData.Query.ODataQueryOptions参数并将其应用于数据源:

[ResponseType(typeof(IQueryable<Something>))]
[System.Web.Http.HttpGet, System.Web.Http.Route("Something/{id:guid}/SomeFiltrableList")]
public async Task<IQueryable<Something>> Get(Guid id, ODataQueryOptions options)
{
    var someFiltrableList = await _repository.GetSomething(id);

    return options
                .ApplyTo(someFiltrableList)
                .Cast<Something>()
                .AsQueryable();
}