public async Task <IEnumerable <Order> > GetAllAsync(int pageIndex, int itemsOnPage, SortOption byName, bool?hasExecutionDate, bool?completed, bool?overdued, string?searchKey, DateTime?startDateTime, DateTime?endDateTime, DateTime?checkDateTime) { var query = GetActualDataAsQueryable() .AsQueryable(); query = query.WhereSuidConditions(hasExecutionDate, completed, overdued, searchKey, startDateTime, endDateTime, checkDateTime); query = query.OrderBy(at => at.ExecutionDateTime).ThenBy(at => at.Id); query = byName switch { SortOption.True => query.OrderBy(at => at.Name), SortOption.Reversed => query.OrderByDescending(at => at.Name), _ => query }; query = query.Skip(itemsOnPage * pageIndex).Take(itemsOnPage); var orders = await query.Select(ProjectOrder()).ToListAsync(); return(orders.Select(Mapper.Map <Entities.Order, Order>)); }