LINQ Multiple LIKE на основе списка - PullRequest
2 голосов
/ 27 мая 2010

У меня есть список ключевых слов в ArrayList, и я хотел иметь возможность создать запрос для поиска записей в таблице на основе этих ключевых слов.

Поскольку список ключевых слов является динамическим, я не могу построитьфиксированный запрос здесь.

Я делаю что-то вроде этого:

foreach (string kw in keywords)
{
  query = query.Where(p => p.Name.StartsWith(kw));
}

Здесь требуется "StartsWith", потому что мне нужно искать записи, которые фактически начинаются с предоставленного ключевого слова.

В T-SQL это было бы примерно так

Select * from Table where 
Name like 'keyword1%' 
or Name like 'keyword2%'
or Name like 'keyword3%'
or ...

Но мне нужно быть в состоянии сделать это в LINQ ... Возможно ли это?

Ответы [ 2 ]

3 голосов
/ 27 мая 2010

Это должно сделать это:

var query = table.Where(p => keywords.Any(kw => p.Name.StartsWith(kw)));
0 голосов
/ 22 июня 2012
var query = table.Where(p => keywords.Any(kw => p.Name.StartsWith(keyword1) || p.Name.StartsWith(keyword2) || p.Name.StartsWith(keyword3) || p.Name.StartsWith(keyword4)));

Надеюсь, это поможет вам и хорошего дня.

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