public IActionResult Shop(string searchString, string filter, string sortBy, bool ascending) { var products = _repository.GetAllProducts(); if (!string.IsNullOrEmpty(filter)) { products = products.Where(product => product.Category == filter || product.Subcategory == filter); } if (!string.IsNullOrEmpty(searchString)) { products = products.Where(product => product.Name.ToLower().Contains(searchString.ToLower())); } if (!string.IsNullOrEmpty(sortBy)) { switch (sortBy) { case "Price": products = products.OrderBy(product => product.Price); break; case "Category": products = products.OrderBy(product => product.Category); break; case "Subcategory": products = products.OrderBy(product => product.Subcategory); break; case "Name": products = products.OrderBy(product => product.Name); break; default: break; } if (!ascending) { products = products.Reverse(); } } var shopVm = new ShopViewModel() { Products = products, Filters = new SelectList(_repository.GetCategoriesAndSubcategories()), Ascending = ascending, Filter = filter, SearchString = searchString, SortBy = sortBy }; return(View(shopVm)); }