我正在创建一个带有多个可选参数的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 });
}
答案 0 :(得分:1)
请尝试以下代码:
from r in db.requests
where r.status == status || status == ""
select new Models.Request
如果status为空,则表达式的第二部分为true,无论第一部分的值如何,都将返回所有项目。否则,表达式的第一部分将过滤结果集。