public async Task <IActionResult> Index(string sortString, string searchString, string currentFilter, int?page) { ViewData["SortByName"] = string.IsNullOrEmpty(sortString) ? "descendName" : ""; ViewData["SortBySchool"] = sortString == "school" ? "descendSchool" : "school"; ViewData["currentFilter"] = searchString; ViewData["CurrentSort"] = sortString; ViewData["CountAll"] = _guestsGuestRepository.GetAllGuests().Count(); ViewData["CountVisitors"] = _guestsGuestRepository .GetAllGuests() .Count(guest => guest.Member == "visitor"); ViewData["CountWorkers"] = _guestsGuestRepository .GetAllGuests() .Count(guest => guest.Member == "worker"); ViewData["CountMembers"] = _guestsGuestRepository .GetAllGuests() .Count(guest => guest.Member == "member"); if (searchString != null) { page = 1; } else { searchString = currentFilter; } IQueryable <Guest> guests = _guestsGuestRepository.GetAllGuests(); if (!string.IsNullOrEmpty(searchString)) { guests = _guestsGuestRepository.GeneralSearch(searchString); } switch (sortString) { case "descendName": guests = guests.OrderBy(guest => guest.FirstName); break; case "school": guests = guests.OrderByDescending(guest => guest.School); break; default: guests = guests.OrderBy(guest => guest.LastName); break; } #region Guest ViewModel //var guestVM = guests // .Select(guest => new Guest() // { // Id = guest.Id, // FirstName = guest.FirstName, // LastName = guest.LastName, // AgeGroup = guest.AgeGroup, // Gender = guest.Gender, // MaritalStatus = guest.MaritalStatus, // Phone = guest.Phone, // Email = guest.Email, // School = guest.School, // YearOfStudy = guest.YearOfStudy, // Member = guest.Member, // PrayerRequest = guest.PrayerRequest, // }); #endregion const int pageSize = 10; return(View(await PaginatedList <Guest> .CreateAsync(guests.AsNoTracking(), page ?? 1, pageSize))); }