public GetHorseAdListResults SearchAfter(SearchHorseDao searchQuery, int pageNumber) { var skipNumber = GetNumberToSkip(pageNumber); var searchPredicate = searchQuery.GetSearchPredicate(); var orderProperty = searchQuery.GetOrderProperty(); var isAscendingSortOrder = searchQuery.IsAscendingSortOrder(); var horseAds = _ctx.HorseAds.AsQueryable().AsExpandable().Where(searchPredicate); var results = new GetHorseAdListResults() { TotalCount = horseAds.Count(), HorseAdList = isAscendingSortOrder ? horseAds.AsEnumerable().OrderBy(x => orderProperty.GetValue(x, null)).Skip(skipNumber).Take(ApplicationConstants.AdsPerPage).ToList() : horseAds.AsEnumerable().OrderByDescending(x => orderProperty.GetValue(x, null)).Skip(skipNumber).Take(ApplicationConstants.AdsPerPage).ToList() }; return(results); }