У меня есть текстовое поле, которое позволяет пользователю указать строку поиска, включая wild cards, например:
Joh*
*Johnson
*mit*
*ack*on
Прежде чем использовать LINQ to Entities, у меня была хранимая процедура, которая взяла эту строку в качестве параметра и сделала:
SELECT * FROM Table WHERE Name LIKE @searchTerm
И тогда я просто сделаю String.Replace('*', '%'), прежде чем передать его.
Теперь с LINQ to Entities я пытаюсь выполнить одно и то же. Я знаю, что есть StartsWith, EndsWith и Содержит поддержку, но она не будет поддерживать ее так, как мне нужно.
Я читал о "SqlMethods.Like" и пробовал это:
var people = from t in entities.People
where SqlMethods.Like(t.Name, searchTerm)
select new { t.Name };
Однако я получаю следующее исключение:
LINQ to Entities does not recognize the method 'Boolean Like(System.String,
System.String)' method, and this method cannot be translated into a store
expression.
Как получить эту же функциональность с помощью LINQ to Entities?