2013-05-06 3 views
0

У меня уже есть параметр города, который представляет собой городское имя, которое я буду искать в своей БД, все работает хорошо, когда я делаю mysite/List? City = mycityname, но то, что я пытаюсь сделать что я также хотел бы выполнить поиск по первому имени в сочетании с примером города Список? city = mycityname & firstName = myfirstname. Как я могу это сделать ? Вот мой запрос для города, я также добавил параметр firstname, но я действительно не знаю, как его добавить, поэтому он будет фильтровать оба.Несколько параметров asp net mvc 4

public string CurrentFirstName { get; set; }

public ViewResult List(string city, string firstName, int page = 1) 
    { 
     UsersListViewModel model = new UsersListViewModel 
     { 
      Users = repository.Userss 
      .Where(p =>city == null || p.CityName == city) 
      .OrderBy(p => p.UsersId) 
      .Skip((page - 1) * PageSize) 
      .Take(PageSize), 
      PagingInfo = new PagingInfo 
      { 
       CurrentPage = page, 
       UsersPerPage = PageSize, 
       TotalUsers = repository.Userss.Count() 
      }, 
      CurrentCity = city 
      // CurrentFirstName = firstName 
     }; 
     return View(model); 
    } 

ответ

1

Вы можете сделать некоторые условные построения запросов, как,

public ViewResult List(string city, string firstName, int page = 1) 
{ 
    var query = repository.Userss.Where(p => city == null || p.CityName == city); 
    if (firstName != null) 
     query = query.Where(p => firstName == null || p.FirstName == firstName); 

    var model = new UsersListViewModel 
    { 
     Users = query 
     .OrderBy(p => p.UsersId) 
     .Skip((page - 1) * PageSize) 
     .Take(PageSize), 
     PagingInfo = new PagingInfo 
     { 
      CurrentPage = page, 
      UsersPerPage = PageSize, 
      TotalUsers = repository.Userss.Count() 
     }, 
     CurrentCity = city 
     // CurrentFirstName = firstName 
    }; 
    return View(model); 
} 

Примечание: я думаю, вы должны также рассмотреть критерии поиска по TotalUsers расчета

надеюсь, что это помогает.

1

Вы можете написать что-то вроде этого

Users = repository.Userss 
     .Where(p =>city == null || p.CityName == city) 
     .Where(p=> firstName == null || p.FirstName == firstName) 
     .OrderBy(p => p.UsersId) 
    // rest of your query 
1

Посмотрите в следующий код:

public ViewResult List(string city, string firstName, int page = 1) 
    { 
     UsersListViewModel model = new UsersListViewModel 
     { 
      Users = repository.Userss 
      .Where((p =>city == null || p.CityName == city) && 
      (p =>firstname == null || p.FirstName == firstName)) 
      .OrderBy(p => p.UsersId) 
      .Skip((page - 1) * PageSize) 
      .Take(PageSize), 
      PagingInfo = new PagingInfo 
      { 
       CurrentPage = page, 
       UsersPerPage = PageSize, 
       TotalUsers = repository.Userss.Count() 
      }, 
      CurrentCity = city 
      CurrentFirstName = firstName 
     }; 
     return View(model); 
    } 
Смежные вопросы