使用多个查询参数从数据库中获取所有或特定数据(ASP.NET Core Web Api)
Get ALL or SPECIFIC data from the DB using multiple query parameters (ASP.NET Core Web Api)
我正在开发一个 ASP.NET 核心 Web Api,我想创建一个方法,从用户那里获取多个参数,所有参数都是可选的,return过滤后的数据。
类似于:
public async Task<ReportEntity> GetReportByFilters(StatusEnum paramA, bool paramB, ReportStatusEnum paramC)
{
report = await _context.tbl_Reports.Include(x => x.User)
.Where(x => x.Status == paramA, x.IsDone == paramB, x.ReportStatus == paramC)
.ToListAsync();
return report;
}
这些参数可能会被解析,也可能不会被解析,在这种情况下,应该删除过滤器。如果没有参数,则应接收所有数据。
我该怎么做?
最简单的方法是这样的:
public async Task<ReportEntity> GetReportByFilters(StatusEnum? paramA, bool? paramB, ReportStatusEnum? paramC)
{
var query = _context.tbl_Reports.AsNoTracking();
if (paramA != null)
query = query.Where(x => x.Status == paramA.Value);
if (paramB != null)
query = query.Where(x => x.IsDone == paramB.Value);
if (paramC != null)
query = query.Where(x => x.ReportStatus == paramC.Value);
var report = await query.Include(x => x.User).ToListAsync();
return report;
}
我正在开发一个 ASP.NET 核心 Web Api,我想创建一个方法,从用户那里获取多个参数,所有参数都是可选的,return过滤后的数据。
类似于:
public async Task<ReportEntity> GetReportByFilters(StatusEnum paramA, bool paramB, ReportStatusEnum paramC)
{
report = await _context.tbl_Reports.Include(x => x.User)
.Where(x => x.Status == paramA, x.IsDone == paramB, x.ReportStatus == paramC)
.ToListAsync();
return report;
}
这些参数可能会被解析,也可能不会被解析,在这种情况下,应该删除过滤器。如果没有参数,则应接收所有数据。 我该怎么做?
最简单的方法是这样的:
public async Task<ReportEntity> GetReportByFilters(StatusEnum? paramA, bool? paramB, ReportStatusEnum? paramC)
{
var query = _context.tbl_Reports.AsNoTracking();
if (paramA != null)
query = query.Where(x => x.Status == paramA.Value);
if (paramB != null)
query = query.Where(x => x.IsDone == paramB.Value);
if (paramC != null)
query = query.Where(x => x.ReportStatus == paramC.Value);
var report = await query.Include(x => x.User).ToListAsync();
return report;
}