Множественный поиск в Asp.net (структура сущностей) с несколькими полями поиска - PullRequest
0 голосов
/ 23 ноября 2018

Изображение У меня проблема с разработкой формы, которую можно искать по нескольким полям поиска ..... когда я пытаюсь найти имя и электронную почту вместе, ActionResult ... компилятор говоритоба запроса linq не могут быть применены с && operator..я не знаю почему ...


[HttpPost]
public ActionResult Login(string search,string search2)
{
     var obj = db.Emps.Where(x => x.Employee_name.StartsWith(search)) && db.Emps.Where(x=>x.Employee_email.StartsWith(search2));
     return View(obj);
}

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Вам нужно использовать оба условия внутри одного Where

[HttpPost]
public ActionResult Login(string search,string search2)
{
     var obj = db.Emps.Where(x => x.Employee_name.StartsWith(search) && x.Employee_email.StartsWith(search2));
     return View(obj);
}
0 голосов
/ 23 ноября 2018

Если вы посмотрите на свой текущий код, первая часть db.Emps.Where(x => x.Employee_name.StartsWith(search)) вернет коллекцию, IQueryable<Emp>, а вторая часть выражения также вернет тот же тип, IQueryable<Emp>.

* 1005.* Таким образом, ваш код в основном пытается выполнить / скомпилировать выражение IQueryable<Emp> && IQueryable<Emp>, и поскольку оно недопустимо, компилятор сообщает вам, что оно недопустимо.

В идеале вы должны иметь оба предиката условия WHERE внутри одного и того же Where метода.

var obj = db.Emps.Where(x => x.Employee_name.StartsWith(search) 
                          && x.Employee_email.StartsWith(search2));

Имейте в виду, что переменная obj по-прежнему имеет тип IQueryable<Emp>.Если вы хотите выполнить свой запрос LINQ, вы можете вызвать метод ToList().

List<Emp> = db.Emps.Where(x => x.Employee_name.StartsWith(search) 
                            && x.Employee_email.StartsWith(search2)).ToList();

Если вы сделаете указанное выше изменение, убедитесь, что ваше представление строго типизировано в List<Emp> вместо IQueryable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...