LINQ2SQL LIKE команда для фразы - PullRequest
       1

LINQ2SQL LIKE команда для фразы

6 голосов
/ 20 сентября 2010

Я пытаюсь получить список строк, в которых он содержит «Бритни Спирс», и это то, что я использую

from p in Objects
where p.Title.Contains("Britney Spears")
select p

Это отлично работает, но если я хочу выбрать заголовок, который называется «Бритни»Джин Спирс "," Бритни 'Секси' Спирс "это не работает, поэтому мой вопрос: как вставить подстановочный знак"% "между Бритни Спирс при выполнении поиска LINQ2SQL?Спасибо.

С уважением, Энди.

Ответы [ 3 ]

13 голосов
/ 20 сентября 2010

Для этой цели вы можете использовать метод SqlMethods.Like.

from p in Objects
where SqlMethods.Like(p.Title, "Britney% Spears")
select p
0 голосов
/ 20 сентября 2010

Просто используйте StartsWith() и EndsWith() для имитации шаблона.AFAIK, LINQ-to-SQL не поддерживает подстановочные знаки.

from p in Objects
where p.Title.StartsWith("Britney") && c.Title.EndsWith("Spears")
select p;

В противном случае вы можете выполнить запрос напрямую, если у вас более сложный шаблон.

0 голосов
/ 20 сентября 2010

делайте точно так же, как если бы вы работали с прямым SQL

Вы можете указать специальные символы с предложением like, такие как ".", "%" И "[]"

если это не достаточно хорошо, тогда вы можете использовать регулярное выражение, но будьте осторожны, так как регулярное выражение будет выполнено на стороне клиента, то есть будет извлекать все это и затем пытаться сузить результаты в памяти. Вы можете несколько оптимизировать метод zerkms, выполнив

from p in Objects
where p.Title.Contains("Britney") && p.Title.Contains("Spears") && regex.Match(p.Title).Success
select p

Я не тестировал его, но он должен выполнить сначала два условия на стороне сервера SQL, а затем сузить с помощью регулярных выражений.

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