У меня есть два метода:
private IQueryable<Alert> GetAlert(int organisationId, bool includeDone = false)
{
var query = _patientDbContext.Alerts
.Where(i => i.OrganisationId == organisationId);
if (!includeDone)
{
query = query.Where(i => !i.IsDone);
}
query = query.OrderBy(i => i.Deadline);
return query;
}
private IQueryable<Alert> GetAlerts(int organisationId, DateTime? beginDate, DateTime? endDate , bool includeDone = false)
{
var query = _patientDbContext.Alerts
.Where(i => i.OrganisationId == organisationId && (beginDate == null || i.CreatedAt <= endDate) && (endDate == null || i.CreatedAt >= beginDate));
if (!includeDone)
{
query = query.Where(i => !i.IsDone);
}
query = query.OrderBy(i => i.Deadline);
return query;
}
Таким образом, единственное отличие состоит в том, что один метод имеет в качестве параметров dateTeime для фильтрации.
Но возможно ли сделать один метод из этого?
Спасибо
Вот как я сейчас его использую:
public async Task<Alert> GetAlertForOrganisation(Guid alertId, int organisationId)
{
return await GetAlert(organisationId)
.Where(i => i.AlertId == alertId)
.SingleOrDefaultAsync();
}
public async Task<List<Alert>> GetAllAlertsForOrganisation(int organisationId, DateTime? beginDate, DateTime? endDate)
{
return await GetAlerts(organisationId, beginDate, endDate)
.ToListAsync();
}