我在嘗試從 5 個引數中過濾時嘗試搜索我的頁面時遇到問題。
如果引數為空,那么我想忽略該搜索,并且僅在引數中有值時才回傳結果。
目前我使用了單獨的引數,但我需要滿足所有 5 個引數的東西,如果它有 4 個值中的 2 個,那么它應該根據過濾器回傳。:
if (name != null)
{
report = report.Where(asd => asd.name == name).OrderBy(x => x.Id).ToList();
}
else if (Id != null)
{
report = report.Where(x => x.Id == Id).OrderBy(x => x.Id).ToList();
}
因此,這僅適用于 1 個,我將如何將所有 4 個連接在一起以使其協同作業。
這是我的完整代碼:
[HttpGet]
public ActionResult Get(string Id = null, string name = null, string status = null, string startDate = null, string endDate = null)
{
List<ReportModel> report = new List<ReportModel>();
report = (from data in _context.ReportData
//where data.Id== Id
//&& data.name== name
//&& data.Status == status
//&& data.Date >= Convert.ToDateTime(startDate) && data.Date < Convert.ToDateTime(endDate)
select new ReportModel
{
Id = data.Id,
Name = data.Plant,
Status = data.Status,
Date = data.Date
}).ToList();
if (name != null)
{
report = report.Where(asd => asd.name == name).OrderBy(x => x.Id).ToList();
}
else if (Id != null)
{
report = report.Where(x => x.Id == Id).OrderBy(x => x.Id).ToList();
}
else if (status != null)
{
report = report.Where(x => x.Status == status).OrderBy(x => x.Id).ToList();
}
return Ok(report);
}
請幫忙。
uj5u.com熱心網友回復:
如果您關心性能,請不要ToList()提前呼叫,因為它會將整個表加載到記憶體中。IQueryable可以組合以產生所需的結果。
[HttpGet]
public ActionResult Get(string Id = null, string name = null, string status = null, string startDate = null, string endDate = null)
{
var query = _context.ReportData.AsQueryable();
if (name != null)
{
query = query.Where(asd => asd.name == name);
}
if (Id != null)
{
query = query.Where(x => x.Id == Id);
}
if (status != null)
{
query = query.Where(x => x.Status == status);
}
query = query.OrderBy(x => x.Id);
var report = query
.Select(data => new ReportModel
{
Id = data.Id,
Name = data.Plant,
Status = data.Status,
Date = data.Date
})
.ToList();
return Ok(report);
}
uj5u.com熱心網友回復:
不使用if條件,可以直接在Where子句中添加條件
if (name != null)
{
query = query.Where(asd => asd.name == name);
}
// replace by
query = query.Where(asd => asd.name == name || name == null);
當 name 為 null 時,Where 條件將始終為真。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/349154.html
