我正在嘗試執行搜索功能,但我想添加用戶可以在搜索中執行的所有可能性,但我仍然是初學者,所以我想知道是否有更簡單的方法可以做到這一點,而不是在每個上都寫 else if范圍。
public JsonResult getAll( string devname, string status1 , string pnumber)
{
List<SavePhone> reportList = new List<SavePhone>();
List<SavePhone> p = new List<SavePhone>();
p = GetAllReports();
if (devname=="nulls" && status1 == "nulls" && pnumber=="nulls" )
{
return Json(p, JsonRequestBehavior.AllowGet);
}
else if(devname != "nulls" && status1 != "nulls" && pnumber != "nulls")
{
for (int i = 0; i < p.Count; i )
{
reportList = p.Where(x => x.DeviceName == devname && x.PNB == pnumber && x.Status==status1).ToList();
}
} else if(devname != "nulls" && status1 != "nulls" && pnumber == "nulls")
{
for (int i = 0; i < p.Count; i )
{
reportList = p.Where(x => x.DeviceName == devname && x.Status == status1).ToList();
}
}
else if (devname != "nulls" && status1 == "nulls" && pnumber != "nulls")
{
for (int i = 0; i < p.Count; i )
{
reportList = p.Where(x => x.DeviceName == devname && x.PNB == pnumber).ToList();
}
}
else if (devname == "nulls" && status1 != "nulls" && pnumber != "nulls")
{
for (int i = 0; i < p.Count; i )
{
reportList = p.Where(x => x.PNB == pnumber && x.Status == status1).ToList();
}
}
else if(devname != "nulls" && status1 == "nulls" && pnumber == "nulls")
{
for (int i = 0; i < p.Count; i )
{
reportList = p.Where(x => x.DeviceName == devname).ToList();
}
}
else if (devname == "nulls" && status1 != "nulls" && pnumber == "nulls")
{
for (int i = 0; i < p.Count; i )
{
reportList = p.Where(x => x.Status == status1).ToList();
}
}
else if (devname == "nulls" && status1 == "nulls" && pnumber != "nulls")
{
for (int i = 0; i < p.Count; i )
{
reportList = p.Where(x => x.PNB == pnumber).ToList();
}
}
var JsonResult = Json(reportList, JsonRequestBehavior.AllowGet);
return JsonResult;
}
有沒有一種方法可以讓代碼自動為我完成,而無需手動添加每個引數,因為如果我有 10 個引數,那將需要很長時間。
uj5u.com熱心網友回復:
.Where
您可以通過為每個引數鏈接 a 來構建您的 LINQ 查詢。
IEnumerable<SavePhone> query = p;
if (devname != 'nulls')
{
query = query.Where(x => x.DeviceName == devname);
}
if (status1 != 'nulls')
{
query = query.Where(x => x.Status1 == status1);
}
//etc.
var reportList = query.ToList();
我不確定你為什么有那個for
回圈,我認為它不需要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/507801.html