|
Programmer ASP.NET MVC C# |
Programming
|
||
Предыдущий | Следующий | |
Возникла типичная задача: по введенным данным пользователя найти нужного человека. Поле для ввода у пользователя одно. Если в это поле вводиться "Иванов", то по такому запросу найти легко, но если будет введено "Иванов Вова", то тут возникают проблемы, потому что для имени и фамилии в базе созданные разные поля. Для такого запроса нужно создать sql такого рода: FirstName like '%'+'Иванов'+'%' or FirstName like '%'+Вова+'%' и такое же для LastName. Т.е. нужно для множества полей, отфильтровать по множеству слов. Немного поразмыслив приходим к такой логики. Разбиваем нашу фразу на слова "Иванов Вова".Split(' '). И полученный массив передаем в процедуру: IQueryable<Person> SearchPersons (params string[] keywords) Это процедура возвратить нам как раз то что нужно. Переменная temp создается для избежание переопределения переменой keyword в цикле foreach. Когда будем перебирать в цикле условия Where, то они создадут между собой множество условий, которые соединены командой &&. |