Как запросить целочисленный столбец для "начинается с" в Entity Framework?
У меня есть столбец, который определяется как целое число в EF (Code First). Я хочу найти его, используя "начинается с". Теперь я могу это сделать:
Where(x => SqlFunctions.StringConvert((double)x.AccountNumber).StartsWith(searchTerm))
Однако SqlFunctions.StringConvert()
переводится в T-SQL-функцию STR()
, которая оставляет результаты по причинам, которые выходят за рамки моего понимания.
Кроме того, я не могу использовать string.TrimStart()
, потому что он не поддерживается платформой Entity Framework.
Может ли кто-нибудь помочь?
Ответы
Ответ 1
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%'