使用ASP.NET Web API 2通过动态参数筛选获取资源

时间:2014-06-06 13:04:54

标签: c# asp.net-web-api

我想使用ASP.NET Web API 2为Web API实现类似于OData $ filter(仅限eq运算符)的动态过滤功能。但我没有使用OData功能。

示例 -

GET /order?id=134017710&orderdate=20-01-2014&status=new

我不想在检索资源时限制静态参数绑定。

我想用动态LINQ来过滤结果来实现它。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我会做这样的事情:

public class QueryObject
{
    public string id { get; set; } 
    public DateTime orderDate { get; set; }
    public string status { get; set; }
    // etc
}

public OrderController : ApiController
{
    public HttpResponseMessage Get([FromUri] QueryObject query) 
    {
         // some method (possibly uses Linq)that acts on your filters
         FilteredGet(query.id, query.orderDate, query.status);

    }
}

这应允许您允许参数为null,并且可以在查询更改时调整LINQ查询。