// GET: /Region/ public ActionResult Index(string sortOrder, string searchString, string currentFilter, int? page) { ViewBag.CurrentSort = sortOrder; ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; if (searchString != null) { page = 1; } else { searchString = currentFilter; } ViewBag.CurrentFilter = searchString; User LoggedInUser = Session["LoggedUser"] as User; QueryBuilder qb = new QueryBuilder(); string query = qb.QueryForLocationTableSegerationForLinq(LoggedInUser); var locations = db.Locations.Where(query).GroupBy(x => x.CityID).Select(group => group.FirstOrDefault()); List<City> ct = new List<City>(); foreach (var loc in locations) ct.Add(loc.City); var cities = ct.AsEnumerable<City>(); query = qb.QueryForRegionFromCitiesForLinq(cities); var region = db.Regions.Where(query).AsQueryable(); if (!String.IsNullOrEmpty(searchString)) { region = region.Where(s => s.RegionName.ToUpper().Contains(searchString.ToUpper())); } switch (sortOrder) { case "name_desc": region = region.OrderByDescending(s => s.RegionName); break; default: region = region.OrderBy(s => s.RegionName); break; } int pageSize = 8; int pageNumber = (page ?? 1); return View(region.ToPagedList(pageNumber, pageSize)); }