public ActionResult SortProperties(string propertyResultsSort = "", int propertyResultsAmount = 25) { Session["CurrentSearchResultsAmount"] = propertyResultsAmount; Session["CurrentSearchResultsSort"] = propertyResultsSort; ViewBag.propertyResultsSort = propertyResultsSort; ViewBag.propertyResultsAmount = propertyResultsAmount; //get paged list out of session // var props = (List<Property>)Session["LastSearchResults"]; var filteredResults = (List <Property>)Session["LastSearchResults"]; //run through filtering var sorter = new PropertySorter(); if (propertyResultsSort != "") { var returnList = sorter.SortProperty(filteredResults, propertyResultsSort); } //put filtered results back in session Session["LastSearchResults"] = PagedList.PagedListExtensions.ToPagedList(filteredResults, 1, propertyResultsAmount); //which page are we on of the results - reset Session["LastPropertyPagerPage"] = 1; //every sort starts on page one, no page //pass to view ViewBag.MatchingProperties = PagedList.PagedListExtensions.ToPagedList(filteredResults, 1, propertyResultsAmount); Session["currentPagedPropertySearch"] = PagedList.PagedListExtensions.ToPagedList(filteredResults, 1, 500000); return(View("SearchProperties")); }