public async Task <IEnumerable <Deployment> > GetDeploymentsAsync(CancellationToken cancellationToken, IDateRange <DateTimeOffset> scheduledDateRange = null, IDateRange <DateTimeOffset> completedDateRange = null) { var query = DeploymentQuery; if (scheduledDateRange == null && completedDateRange == null) { query = DeploymentQuery.Where(deployment => !deployment.Completed.HasValue); return(await query.ToArrayAsync(cancellationToken)); } if (scheduledDateRange != null) { query = DeploymentQuery.Where(deployment => deployment.Scheduled.HasValue && deployment.Scheduled >= scheduledDateRange.Start && deployment.Scheduled <= scheduledDateRange.End); } if (completedDateRange != null) { query = DeploymentQuery.Where(deployment => deployment.Completed.HasValue && deployment.Completed >= completedDateRange.Start && deployment.Completed <= completedDateRange.End); } return(await query.ToArrayAsync(cancellationToken)); }