Зашифрованный символ (строка) для сравнения чисел в Linq - PullRequest
2 голосов
/ 16 октября 2011

У меня есть этот запрос.

  levelnumber = (from b in bv.baLevels
                 where b.ba_Level_Code == ("0" + SqlFunctions.StringConvert((double)cl.Level_Num.Value)) && b.isActive == 1
                 select (b.ba_Level_Code + " - " + b.ba_Level_Desc)).FirstOrDefault(),

Моя проблема: b.ba_Level_Code - строка.

cl.Level_Num is Int.

таблица baLevels У меня есть этот ba_Level_code, значение 008

, но cl - это таблица BaCodeLibrary, в которой cl.Level_Num имеет 8

если я делаю запрос с жестко закодированным значением

 levelnumber = (from b in bv.baLevels
                where b.ba_Level_Code == "008" && b.isActive == 1
                select (b.ba_Level_Code + " - " + b.ba_Level_Desc)).FirstOrDefault(),

как отобразить 008? cl.Level_Num, который я получаю, имеет 8. Мне нужно изменить это значение на 008.

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Я не вижу хорошего способа сделать это в LINQ to Enties.Предполагая, что вы не можете изменить тип данных столбца ba_Level_Code, я думаю, что вам лучше всего добавить в эту таблицу постоянный вычисляемый столбец , проиндексировать его и использовать этот столбец в запросе.

Например, если вы определили столбец

ba_Level_Code_Int as (case when isnumeric(ba_Level_Code)= 1 then cast(ba_Level_Code as int) end) persisted

, тогда ваш запрос LINQ может быть

levelnumber = (from b in bv.baLevels   
               where b.ba_Level_Code_Int == cl.Level_Num.Value && b.isActive == 1   
               select (b.ba_Level_Code + " - " + b.ba_Level_Desc)).FirstOrDefault();
1 голос
/ 16 октября 2011

Вы можете использовать string.Format, чтобы указать, что ваш cl.Level_Num преобразуется в строку с минимальным количеством цифр:

string.Format("{0:D3}", cl.Level_Num.Value) // would ouput "008" value 8

Таким образом:

levelnumber = (from b in bv.baLevels
               where b.ba_Level_Code == string.Format("{0:D3}", cl.Level_Num.Value) && b.isActive == 1
               select (b.ba_Level_Code + " - " + b.ba_Level_Desc)).FirstOrDefault()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...