Как я могу выполнить поиск LIKE с помощью Entity Framework 6 и npgsql?
Я попытался
<сильный>1. SQLMethods.Like
queryable.Where(entity => SqlMethods.Like(entity.Name, "%EW%6%"));
но я получил сообщение
LINQ to Entities не распознает метод 'Boolean Like(System.String, System.String)', и этот метод нельзя преобразовать в выражение хранилища.
2. метод расширения linq
Затем я попробовал метод расширения linq WhereLike
из этого сообщения stackoverflow: https://stackoverflow.com/a/27153779/1489968
Это работает, но не во всех случаях, потому что разрезает строку поиска на несколько частей.
queryable.WhereLike(t => t.Name, "%EW%6%"));
преобразуется в два вызова Contains
, соединенных и, которые преобразуются в два выражения LIKE
.
SELECT ...
WHERE ... AND
("Extent1"."name" LIKE E'%EU%' AND "Extent1"."name" LIKE E'%6%')
что означает "Все объекты с названием, содержащим "EU" и "6""
Но я хочу, чтобы преобразование привело к запросу, подобному следующему:
SELECT ...
WHERE ... AND
("Extent1"."name" LIKE E'%EW%6%')
что означает "Все объекты с именем, содержащим "EU", за которым следует строка, содержащая "6""