LINQ - ИЛИ два предложения SqlMethods.Like - PullRequest
0 голосов
/ 10 февраля 2012

Мне нужно ИЛИ два оператора SqlMethods.Like в LINQ, и я не уверен, как это сделать (или если это правильный путь).

У меня есть поля «Идентификатор поставщика» и «Имя поставщика», но у меня есть только общий поиск поставщика, который позволяет пользователю искать поставщика по его имени или идентификатору. Я также разрешаю подстановочные знаки в поиске, поэтому мне нужно найти поставщиков, чей ID или имя совпадают с вводом пользователя.

Я хочу сделать что-то вроде ниже, но, очевидно, это не правильно. (РЕДАКТИРОВАТЬ: он работает как написано.)

results = results.Where(p => SqlMethods.Like(p.VendorId, inputVendor.Replace("*", "%") ||
                             SqlMethods.Like(p.VendorName, inputVendor.Replace("*", "%"));

Справочная информация: я добавляю операторы where в зависимости от параметров поиска, введенных пользователем, следовательно, результаты = результаты. Где часть.

Любая помощь будет оценена!

1 Ответ

2 голосов
/ 10 февраля 2012

Мне не понятно, почему это "очевидно" не правильно. Предположительно это не работает, иначе вы бы не опубликовали, но не очевидно как это не работает.

Я бы предложил выполнить замену до запроса, например:

string vendorPattern = inputVendor.Replace("*", "%");

Но тогда я ожидаю, что это сработает:

results = results.Where(p => SqlMethods.Like(p.VendorId, vendorPattern) ||
                             SqlMethods.Like(p.VendorName, vendorPattern));

Конечно, вы ограничены тем, где подстановочные знаки могут появляться в запросе SQL LIKE, но это отдельная проблема. (Я не уверен в поведении, если оно не в начале или в конце.)

Если это не поможет, обновите вопрос о том, что происходит, когда вы пытаетесь это сделать.

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