【问题标题】:Pre-filtering OData using an URL param (使用 URL 参数预过滤 OData (
【发布时间】:2016-12-22 17:02:16
【问题描述】:

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

[ResponseType(typeof(IQuerable<Something>))]
[HttpGet, Route("Something/{id:guid}/SomeFiltrableList")]
public async Task<IHttpActionResult> GetBySomethingId(Guid id)
{
  var someFiltrableList= await _repository.GetSomething(id);

  return Ok(someFiltrableList.AsQueryable());
}

有可能做这样的事情吗?如何? 谢谢

【问题讨论】:

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


    【解决方案1】:

    添加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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多