Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ASP.NET Web API 2通过动态参数筛选获取资源_C#_Asp.net Web Api - Fatal编程技术网

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

C# 使用ASP.NET Web API 2通过动态参数筛选获取资源,c#,asp.net-web-api,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来过滤结果 有更好的方法吗?我会这样做: public class QueryObject { public string id {

我想使用ASP.NET Web API 2实现Web API的动态过滤功能,类似于OData$filter(尽管只有eq操作符)。但我没有使用OData功能

范例-

GET /order?id=134017710&orderdate=20-01-2014&status=new
我不想在检索资源时限制静态参数绑定

我的想法是使用动态LINQ来过滤结果


有更好的方法吗?

我会这样做:

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查询。

这是一种很好的方法。通过这种方式,我可能可以限制过滤器列表,而不是实体的所有属性。