Функция поиска с использованием. Содержит термины в одном поле - PullRequest
3 голосов
/ 09 декабря 2011

Я построил функцию поиска для сайта продукта. Поиск работает нормально. Недавно мы добавили поле SearchTerm в базу данных. Пример данных SearchTerm: "рабочая обувь синий черный механизм" Текущий код

    pM = (from p in ctx.Products
                      where
                            p.productSearchField.Contains(term) ||
                            p.productName.Contains(term)
                      select p).ToList()

Если термин = "обувь" <- работает </p>

Если термин = "рабочая обувь" <- работает </p>

Если термин = "черные туфли" <- НЕ работает. </p>

Я также пытался разделить данные SearchTerm запятыми, но это не сработало. Любой совет?

1 Ответ

3 голосов
/ 09 декабря 2011

Разделите термин на отдельные термины.Посмотрите, есть ли совпадение:

term.Split(' ').Any(i => p.productSearchField.Contains(i))

Или, если каждое слово должно соответствовать:

term.Split(' ').All(i => p.productSearchField.Contains(i))

РЕДАКТИРОВАТЬ

             var terms = term.Split(' ');
             pM = (from p in ctx.Products
                  where
                        terms.All(i => p.productSearchField.Contains(i)) ||
                        p.productName.Contains(term)
                  select p).ToList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...