Поиск с несколькими столбцами с помощью entity framework в MVC
Привет у меня есть таблица курсов и ее список в индексном представлении , каждый курс содержит имя,программу,Блок,Модуль и год , список работает нормально теперь я хочу искать курсы на основе любой комбинации этих параметров, так что ниже приведены мои поля поиска
<a href="https://imge.to/i/vdroSh"></a>
программа заполняет выпадающий лет и год dorpdown заполняет выпадающие блоки и блоки выпадающем заполняет модулей . Ниже приведен мой метод intext он хорошо работает, если я даю строку имени курса в качестве параметра, но если я просто хочу найти все курсы в конкретной программе или году, блоке или модуле, то он не возвращает ничего ниже моего контроллера.
любой может поделиться полным примером поиска с несколькими столбцами несколькими строковыми параметрами и несколькими целочисленными параметрами
Что я уже пробовал:
public ActionResult Index(string sortOrder, string currentFilter, string SearchString,int? Block_Id,int? Program_Id,int? Year,int? Module_id, int? page) { ViewBag.Block_Id = new SelectList(db.Blocks, "Id", "Name"); ViewBag.Course_Category_Id = new SelectList(db.Courses_Category, "Id", "Category_Name"); ViewBag.Module_Id = new SelectList(db.Moduels, "Id", "Name"); ViewBag.Program_Id = new SelectList(db.Programs, "Id", "Program_Title"); ViewBag.Year = new SelectList(db.Years, "Id", "Name"); ViewBag.CurrentSort = sortOrder; ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : ""; ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date"; if (SearchString != null) { page = 1; } else { SearchString = currentFilter; } ViewBag.CurrentFilter = SearchString; var course = from s in db.Courses select s; if (!String.IsNullOrEmpty(SearchString) || Block_Id != null || Program_Id != null || Year != null || Module_id != null) { course = course.Where(s => s.Course_Name.Contains(SearchString) || s.Program_Id==Program_Id || s.Block_Id == Block_Id || s.Module_Id==Module_id); } switch (sortOrder) { case "name_desc": course = course.OrderByDescending(s => s.Course_Name); break; case "Date": course = course.OrderBy(s => s.Date_Created); break; case "date_desc": course = course.OrderByDescending(s => s.Date_Created); break; default: course = course.OrderBy(s => s.Course_Name); break; } int pageSize = 5; int pageNumber = (page ?? 1); ViewData["UserName"] = _ILogin.GetUserNamebyUserID(Convert.ToInt32(Session["UserID"])); return View(course.ToPagedList(pageNumber,pageSize)); }
ZurdoDev
У вас есть код для одного фильтра поиска, верно? Поэтому просто сделайте то же самое и добавьте еще.
Malikdanish
Привет, не могли бы вы немного объяснить это ?