public static PagedList <RecipeSearchModel> SearchRecipes(this IRecipeManager recipeManager, int page, int pageSize, RecipeSortType sortType, ViewModels.Filter filter) { if (pageSize < 1) { pageSize = 1; } ICollection <RecipeSearchModel> data = Mapper.Map <IEnumerable <Entities.Recipe>, IEnumerable <RecipeSearchModel> >( recipeManager.FindByName(filter.SearchKeyword ?? string.Empty)).ToList(); var orderedData = RecipeHelper.SortRecipes(recipeManager.FilterProducts(data, filter), sortType); int pages = (data.Count + pageSize - 1) / pageSize; if (page > pages) { page = pages; } if (page < 1) { page = 1; } return(new PagedList <RecipeSearchModel>(orderedData, page, pageSize)); }