Как SQL-запрос в LINQ - PullRequest
       11

Как SQL-запрос в LINQ

0 голосов
/ 08 октября 2010

Моя проблема заключается в следующем:

Я ищу решение в LINQ, которое переводит выражение LINQ в запрос SQL LIKE.

(я знаю, что в LINQ я могу использовать Contains,StarsWidth, EndWidth вместо 'LIKE', но в моем случае это не очень хорошее решение, и если вы проверите сгенерированный сценарий sql, вы увидите, что он не использует LIKE)

Я нашел много статей, в которых используетсяSystem.Data.Linq.SqlClient.SqlMethods.Like методы, поэтому я написал свой запрос:

var query = from c in _context.prgCity where SqlMethods.Like( c.FullName, "%buda") select c.FullName + "|" + c.prgCountry.CountryName;

return query.ToList<string>();

Но когда запрос выполняется, я получаю следующее сообщение об ошибке:

"LINQ to Entities делаетне распознается метод метода Boolean Like (System.String, System.String), и этот метод нельзя преобразовать в выражение хранилища. "

Кто-нибудь может мне помочь, если я что-то не так делаю?

Ответы [ 4 ]

8 голосов
/ 08 октября 2010

Вы пытаетесь использовать SqlMethods.Like при переходе с LINQ на Entities. Согласно документации :

Этот метод в настоящее время поддерживается только в запросах LINQ to SQL.

Вы действительно не объяснили, почему Contains / StartsWith / EndsWith не работают для вас (и по моему опыту они делают переводятся в LIKE предложения).

4 голосов
/ 08 октября 2010

Вы можете написать свой запрос как:

var query = from c in _context.prgCity 
            where c.FullName.EndsWith("buda")
            select c.FullName + "|" + c.prgCountry.CountryName;
1 голос
/ 08 октября 2010
where c.FullName.Contains("buda")
0 голосов
/ 08 октября 2010

Используйте Содержит вместо SQLMethods.Like. Это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...