public async Task <IActionResult> Index(string sorting_order, int?pageNumber) { ViewData["CurrentSort"] = sorting_order; //if the sort parameter is null or empty then we are initializing the value as descending name ViewBag.SortByName = string.IsNullOrEmpty(sorting_order) ? "descending Name" : ""; //if the sort value is gender then we are initializing the value as descending gender ViewBag.SortById = sorting_order == "Id" ? "descending Id" : "Id"; IQueryable <ProductViewModel> ProductList = await _productPageService.GetAllProducts(); switch (sorting_order) { case "descending Name": ProductList = ProductList.OrderByDescending(x => x.Name); break; case "descending Id": ProductList = ProductList.OrderByDescending(x => x.Id); break; case "Id": ProductList = ProductList.OrderBy(x => x.Id); break; default: ProductList = ProductList.OrderBy(x => x.Name); break; } int pageSize = 3; return(View(await PaginatedList <ProductViewModel> .CreateAsync(ProductList.AsNoTracking(), pageNumber ?? 1, pageSize))); }