powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Entity Framework Linq и оператор LIKE
5 сообщений из 5, страница 1 из 1
Entity Framework Linq и оператор LIKE
    #36399316
Владимир Затуливетер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые форумчане, подскажите пожалуйста как использовать LIKE в LINQ Entity Framework.
Приведенные примеры в этой статье к сожалению не дают нужных результатов.

Код: plaintext
1.
2.
3.
var query = from c in ctx.Customers
            where c.City.StartsWith("Lo")
            select c;
Код: plaintext
1.
2.
3.
-- will generate this SQL statement:
SELECT CustomerID, CompanyName, ...
FROM    dbo.Customers 
WHERE  City LIKE [Lo%]
Генерирует немного другой код:
Код: plaintext
1.
2.
exec sp_executesql N'SELECT  ...
 WHERE (CAST(CHARINDEX(@p__linq__1, [Extent1].[Description]) AS int)) = 1',N'@p__linq__1 nvarchar(4)',@p__linq__1=N'test'
При таком sql скорость выборки будет ниже, чем при использовании Like.

а вариант с SqlMethods.Like
Код: plaintext
1.
2.
3.
var query = from c in ctx.Customers
            where SqlMethods.Like(c.City, "L_n%")
            select c;
генерирует программное исключение
авторВыражению LINQ to Entities не удается распознать метод "Boolean Like(System.String, System.String)", поэтому его нельзя преобразовать в выражение хранилища..
...
Рейтинг: 0 / 0
Entity Framework Linq и оператор LIKE
    #36399408
Владимир Затуливетер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В msdn нашел следующее:
http://msdn.microsoft.com/ru-ru/library/bb399359.aspx]MSDN: [NOT] LIKE (язык Entity SQL)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
-- LIKE and ESCAPE
-- If an AdventureWorksEntities.Product contained a Name 
-- with the value Down_Tube, the following query would find that 
-- value.
Select value P.Name FROM AdventureWorksEntities.Product 
    as P where P.Name LIKE 'DownA_%' ESCAPE 'A'

-- LIKE
Select value P.Name FROM AdventureWorksEntities.Product 
    as P where P.Name like 'BB%'

решил проблему следующим образом:
но не красиво как-то.
Код: plaintext
1.
2.
3.
MyDbEntities en = new MyDbEntities();
ObjectParameter param = new ObjectParameter("descr", "L_n%");            
var query = en.Customers.Where("it.City like @descr", param);

есть ли вариант без использования параметров?
...
Рейтинг: 0 / 0
Entity Framework Linq и оператор LIKE
    #36399733
Фотография WYPMAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
загляните в этот топик

_______________
AnimeBay - аниме магазин, который Вас не разочарует.
...
Рейтинг: 0 / 0
Entity Framework Linq и оператор LIKE
    #36399898
Владимир Затуливетер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WYPMAH
загляните в этот топик

Спасибо, но тут решение с параметром ObjectParameter, такое же как я привел выше.
Код: plaintext
1.
2.
3.
List<User> users = db.Users.Where("it.UserName LIKE @usernameToMatch", 
        new ObjectParameter("usernameToMatch", usernameToMatch))
    .OrderBy(u => u.UserName).Skip(pageIndex * pageSize).Take(pageSize).ToList();

мое решение:
Код: plaintext
1.
2.
3.
MyDbEntities en = new MyDbEntities();
ObjectParameter param = new ObjectParameter("descr", "L_n%");            
var query = en.Customers.Where("it.City like @descr", param);
...
Рейтинг: 0 / 0
Entity Framework Linq и оператор LIKE
    #36400049
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что если экранировать?
автор
Код: plaintext
1.
2.
3.
string likeCriteria = "L_n%";
var query = from c in ctx.Customers
            where SqlMethods.Like(c.City, string.Format("'{0}'", likeCriteria))
            select c;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Entity Framework Linq и оператор LIKE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]