C# Web api从SQL Server获取(全部)和可选参数

C# Web api从SQL Server获取(全部)和可选参数,c#,sql-server,get,asp.net-web-api,C#,Sql Server,Get,Asp.net Web Api,我正在创建一个带有多个可选参数的webapi 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 未填写参数 from r in db.requests where

我正在创建一个带有多个可选参数的webapi 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
未填写参数

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;
    }

请尝试以下代码:

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

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

谢谢!这很有效。所以我假设,对于更多参数,我应该这样做:其中r.status==status | | status==“”&r.param2==param2 | | param2==“”&&&……@Mtthiask好吧,这并不是那么容易。如果要对第二个相似参数执行相同的操作,则应使用parentethes:
(r.status==status | | status==“”)和&(r.param2==param2 | | param2==“”)
。但是,在这种情况下,如果第一个括号中的表达式为true,则不会计算第二个括号中的表达式。因此,要注意结果是什么。