public IActionResult Index(string category, ProductSortingOption sortingOption, int pageNumber = 1, int itemsPerPage = 4) { ProductsViewModel productsViewModel = new ProductsViewModel() { Products = productRepository.Products .Where(p => p.Category.Name == category || category == null) .SortBy(sortingOption) .Skip((pageNumber - 1) * itemsPerPage) .Take(itemsPerPage), PaginateData = GetPaginateData(category, pageNumber, itemsPerPage) }; return(View(productsViewModel)); }
public static IOrderedEnumerable <Product> SortBy(this IEnumerable <Product> products, ProductSortingOption productSortingOption) { switch (productSortingOption) { default: case ProductSortingOption.AZ: return(products.OrderBy(p => p.Name)); case ProductSortingOption.ZA: return(products.OrderByDescending(p => p.Name)); case ProductSortingOption.PriceAscending: return(products.OrderBy(p => p.Price)); case ProductSortingOption.PriceDescending: return(products.OrderByDescending(p => p.Price)); } }