Как использовать SQL 'КАК' с LINQ к Объектам?

У меня есть текстовое поле, которое позволяет пользователю указывать строку поиска, включая подстановочные знаки, например:

Joh*
*Johnson
*mit*
*ack*on

Перед использованием LINQ к Объектам у меня была хранимая процедура, которая взяла ту строку в качестве параметра и сделала:

SELECT * FROM Table WHERE Name LIKE @searchTerm

И затем я просто сделал бы Строку. Замена ('* ', ' % ') прежде, чем передать его в.

Теперь с LINQ к Объектам я пытаюсь выполнить то же самое. Я знаю, что существует StartsWith, EndsWith и Содержат поддержку, но это не будет поддерживать его в способе, которым мне нужно.

Я читал о "SqlMethods. Как" и попробованный это:

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 для Объектов?

29
задан esac 22 June 2010 в 18:04
поделиться

3 ответа

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/6529a35b-6629-44fb-8ea4-3a44d232d6b9/

var people = entities.People.Where("it.Name LIKE @searchTerm", new ObjectParameter("searchTerm", searchTerm));
34
ответ дан 28 November 2019 в 01:18
поделиться

Итак, ваш выбор:

8
ответ дан 28 November 2019 в 01:18
поделиться
var people = from t in entities.People
                 where t.Name.ToLower().Contains(searchTerm.ToLower())
                 select new { t.Name };

РЕДАКТИРОВАТЬ. Я могу смешивать синтаксис. Обычно я использую методы расширения; но содержит будет работать.

1
ответ дан 28 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: