Как запросить целочисленный столбец для «начинается с» в Entity Framework? - PullRequest
17 голосов
/ 10 октября 2011

У меня есть столбец, который определен как целое число в EF (Code First).Я хочу найти его, используя «начинается с».Теперь я могу сделать это:

Where(x => SqlFunctions.StringConvert((double)x.AccountNumber).StartsWith(searchTerm))

Однако SqlFunctions.StringConvert() переводится в функцию T-SQL STR(), которая оставляет результаты по причинам, которые мне недоступны.

Кроме того, я не могу использовать string.TrimStart(), потому что он не поддерживается Entity Framework.

Может ли кто-нибудь помочь?

1 Ответ

20 голосов
/ 11 октября 2011

Trim() и TrimStart() работают в LINQ to Entities, поэтому вы можете использовать:

Where(x => SqlFunctions.StringConvert((double)x.AccountNumber)
    .TrimStart().StartsWith(searchTerm))

TrimStart переводится в LTRIM в SQL. Например, с searchTerm = 123 вы получите что-то вроде:

WHERE LTRIM(STR( CAST( [Extent1].[AccountNumber] AS float))) LIKE N'123%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...