// GET: Customers public async Task <IActionResult> Index(string searchString, SortState sortOrder = SortState.LastNameAsc) { var customers = from c in await _customers.GetAllAsync() select c; ViewData["CurrentFilter"] = searchString; if (!String.IsNullOrEmpty(searchString)) { customers = customers.Where(s => s.LastName.Contains(searchString) || s.FirstName.Contains(searchString)); } ViewData["LastNameSort"] = sortOrder == SortState.LastNameAsc ? SortState.LastNameDesc : SortState.LastNameAsc; ViewData["AddressSort"] = sortOrder == SortState.AddressAsc ? SortState.AddressDesc : SortState.AddressAsc; customers = sortOrder switch { SortState.LastNameDesc => customers.OrderByDescending(c => c.LastName), SortState.AddressAsc => customers.OrderBy(c => c.Address), SortState.AddressDesc => customers.OrderByDescending(c => c.Address), _ => customers.OrderBy(c => c.LastName), }; return(View(customers)); }