IEnumerable <Car> SortCars(IEnumerable <Car> cars, CarsSortState sortOrder) { ViewData["StateNumber"] = sortOrder == CarsSortState.StateNumberAsc ? CarsSortState.StateNumberDesc : CarsSortState.StateNumberAsc; ViewData["Mark"] = sortOrder == CarsSortState.MarkAsc ? CarsSortState.MarkDesc : CarsSortState.MarkAsc; ViewData["ReleaseYear"] = sortOrder == CarsSortState.ReleaseYearAsc ? CarsSortState.ReleaseYearDesc : CarsSortState.ReleaseYearAsc; switch (sortOrder) { case CarsSortState.StateNumberAsc: return(cars.OrderBy(c => c.StateNumber)); case CarsSortState.StateNumberDesc: return(cars.OrderByDescending(c => c.StateNumber)); case CarsSortState.MarkAsc: return(cars.OrderBy(c => c.Mark)); case CarsSortState.MarkDesc: return(cars.OrderByDescending(c => c.Mark)); case CarsSortState.ReleaseYearAsc: return(cars.OrderBy(c => c.ReleaseYear)); case CarsSortState.ReleaseYearDesc: return(cars.OrderByDescending(c => c.ReleaseYear)); } return(null); }
public IActionResult Index(CarFilter filter, int page = 1, CarsSortState sortOrder = CarsSortState.StateNumberAsc) { if (!HttpContext.Session.TryGet(out IEnumerable <Car> cars, "Cars")) { cars = _context.Cars.AsQueryable(); HttpContext.Session.Set(cars, "Cars"); } ViewData["Marks"] = cars .Select(c => new SelectListItem { Value = c.Mark, Text = c.Mark, Selected = c.Mark == ((string)HttpContext.Items["Mark"] ?? "") }) .Distinct(new SelectListItemEqualityComparer()) .ToList(); cars = SortCars(cars, sortOrder); cars = cars .Where(c => c.StateNumber.StartsWith(filter.StateNumber ?? "")) .Where(c => c.Mark.StartsWith(filter.Mark ?? "")) .Where(c => filter.ReleaseYear != 0 ? c.ReleaseYear == filter.ReleaseYear : true); var count = cars.Count(); cars = cars.Skip((page - 1) * pageSize).Take(pageSize); ViewData["PageViewModel"] = new PageViewModel(count, page, pageSize); return(View(cars)); }
public IActionResult Index(CarsSortState sortOrder = CarsSortState.StateNumberAsc) { if (!HttpContext.Session.TryGet(out IEnumerable <Car> cars)) { cars = _context.Cars.AsQueryable(); HttpContext.Session.Set(cars); } ViewData["Marks"] = cars .Select(c => new SelectListItem { Value = c.Mark, Text = c.Mark, Selected = c.Mark == ((string)HttpContext.Items["Mark"] ?? "") }) .Distinct(new SelectListItemEqualityComparer()) .ToList(); cars = SortCars(cars, sortOrder); return(View(cars)); }