2013-07-08 4 views
0

В Linq мы используем как оператор для строкКак оператор в Linq (для целого числа)

var query = from c in ctx.Customers 
      where c.City.StartsWith("L") && c.City.Contains("n") 
      select c 

Можно ли применять как оператор в LINQ для целых чисел.

, пожалуйста, помогите мне.

+0

Как работать с целым числом? Чего вы действительно пытаетесь достичь? Можете ли вы привести пример того, как вы хотите использовать Like с целым числом? –

+0

@ChrisDunaway: На самом деле я пытаюсь реализовать поиск в режиме реального времени для поля customerID. –

ответ

1

Нет, вы должны были бы бросить в строку первой (см ответ здесь также: Problem with converting int to string in Linq to entities).

В SQL это было бы что-то вроде

DECLARE @StartsWith NVARCHAR 
SET @StartsWith = '1' 

SELECT * FROM Customers 
WHERE (CAST CustomerId AS NVARCHAR(MAX)) LIKE @StartsWith + '%' 

Я предполагаю, что это должно работать в LINQ:

var query = from c in ctx.Customers 
      where SqlFunctions.StringConvert((Decimal)c.CustomerId).Startswith("1") 
      select c; 

к сведению, что это будет медленный запрос, если у вас есть большой стол, как это необходимо будет выполнить сканирование таблицы (любой индекс в столбце int не будет использоваться).

0

.Контейнеры ("/ Integer /")) Вы также можете использовать .StartsWith() или .EndsWith().

0

Вы можете преобразовать целое поле в строку, а затем использовать SqlMethods.Like:

var query = from c in ctx.Customers 
      where SqlMethods.Like(c.IntegerPhoneNumber.ToString(), "555*") 
      select c 
+0

это не сработало для меня, получилось исключение: «LINQ to Entities не распознает метод« Boolean Like .... »вместо этого попытается использовать eSQL. – Menahem

Смежные вопросы