Web api GET(all),带有SQL Server的可选参数

时间:2014-10-29 08:00:30

标签: c# sql-server get asp.net-web-api

我正在创建一个带有多个可选参数的Web API GET(all)方法。 我首先尝试使用1个参数,但最终我需要5个可选参数。 从1个参数开始,我有2种情况:参数填写,参数未填写。

参数填写

from r in db.requests
where r.status == status
select new Models.Request

参数未填写

from r in db.requests
select new Models.Request

我无法让两种情况一起工作所以我的问题是: 我如何结合这两种情况?

控制器

public IEnumerable<Request> Get(string status = "")
    {
        var requests = from r in db.requests
                       //where r.status == status
                       select new Models.Request
                       {
                           ID = r.ID,
                           ...more properties
                           };
            return (IEnumerable<Request>)requests;
    }

路线

protected void Application_Start()
    {
        RouteTable.Routes.MapHttpRoute(
        name: "API Default",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional });
    }

1 个答案:

答案 0 :(得分:1)

请尝试以下代码:

from r in db.requests
where r.status == status || status == ""
select new Models.Request

如果status为空,则表达式的第二部分为true,无论第一部分的值如何,都将返回所有项目。否则,表达式的第一部分将过滤结果集。