Как оператор в Entity Framework?

.net entity-framework linq-to-entities sql-server

Вопрос

Мы пытаемся реализовать оператор «LIKE» в Entity Framework для наших сущностей со строковыми полями, но он не поддерживается. Кто-нибудь еще пытался сделать что-то подобное?

Этот пост в блоге подводит итог нашей проблемы. Мы могли бы использовать содержит, но это соответствует только тривиальному случаю для LIKE. Объединение содержит, начинается с, заканчивается с, и indexof приводит нас туда, но требует перевода между стандартными подстановочными знаками и кодом Linq to Entities.

Принятый ответ

Это старая публикация, но для тех, кто ищет ответ, эта ссылка должна помочь.

Укороченная версия:

Метод SqlFunctions.PatIndex - возвращает начальную позицию первого вхождения шаблона в указанном выражении или нули, если шаблон не найден, для всех допустимых типов данных текста и символов

Пространство имен: System.Data.Objects.SqlClient Сборка: System.Data.Entity (в System.Data.Entity.dll)

Небольшое объяснение также появляется в этой ветке форума .


Популярные ответы

Я ничего не знаю об EF, но в LINQ to SQL вы обычно выражаете предложение LIKE, используя String.Contains:

where entity.Name.Contains("xyz")

переводит на

WHERE Name LIKE '%xyz%'

(Используйте StartsWith и EndsWith для другого поведения.)

Я не совсем уверен, полезно ли это, потому что я не понимаю, что вы имеете в виду, когда говорите, что пытаетесь реализовать LIKE. Если я неправильно понял, дайте мне знать, и я удалю этот ответ :)



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему