Есть ли способ использовать EF.Functions.Like с ключевым словом ESCAPE sql для предотвращения подстановочных знаков - PullRequest
0 голосов
/ 04 мая 2018

Итак, я реализую функцию поиска по таблице с полем varchar, содержащим текст, обычно с простыми строками, но некоторые из них содержат '[Text]', включая скобки.

Для функции фильтрации я использую Entity Framework и пытаюсь использовать EF.Functions.Like, например:

objects = objects.Where(t => EF.Functions.Like(t.name, "%" + param.Request.Name + "%"));

Проблема в том, что object.name содержит эти скобки, потому что он запускает подстановочный знак SQL Charlist, поэтому вышеприведенное возвращает 0 результатов; Я не могу найти информацию о том, как использовать это в тандеме с ключевым словом SQL ESCAPE, например:

...WHERE NAME LIKE '%PRETEXT_\[TEXT\]%' ESCAPE '\'

где вышеприведенный оператор возвращает любой результат, содержащий PRETEXT_ [TEXT]

Есть ли какой-нибудь способ использовать ESCAPE с ними, чтобы я мог избежать символов '[' + ']', или другой / лучший способ сделать что-то подобное?

1 Ответ

0 голосов
/ 04 мая 2018

Согласно документации:

public static bool Like (this Microsoft.EntityFrameworkCore.DbFunctions _, string matchExpression, string pattern, string escapeCharacter);

Вы можете добавить escape-символ в качестве дополнительного аргумента.

Как сказал JamieD77, Contains также должен работать без каких-либо манипуляций со строками.

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