使用多个查询参数从数据库中获取所有或特定数据(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;
}