2009-11-25 2 views
0

Я пытаюсь преобразовать стандартный SQL-запрос в запрос LINQ to SQL.T-SQL STR() C# .NET LINQ to SQL Equivalent

Мне было интересно, что эквивалент LINQ функции T-SQL STR() есть?

STR (T-SQL)

Возвращает символьные данные, преобразованные из числовых данных.

Синтаксис STR (float_expression [, длина [, десятичное]])

Аргументы float_expression Является выражение приближенного числового типа данных (с плавающей точкой) с десятичной точкой . Не используйте функцию или подзапрос как float_expression в функция STR. длина: общая длина, включая десятичную точку, знак, цифры и пробелы. Значение по умолчанию равно 10. decimal. Число мест справа от десятичной цифры . Возвратные типы char

Я пытаюсь явно указать количество знаков после запятой для поля.

Пожалуйста, спасибо!

(Я попытался погуглить вокруг, но Google продолжает переводить ул, как "строка" даже двойные кавычки) ул Обращаясь

EDIT

Я попытался .ToString ("N2"), что именно то, что я хочу, но LINQ не может его перевести.

EDIT

Разъяснение, у меня есть поле SQL, который является двойной. Я должен добавить/усечь до 2 знаков после запятой. После этого я добавлю его с дополнительной строкой. Поэтому я считаю, что мне нужно преобразовать его в строку. Это потому, что мне нужно сравнить эту сгенерированную строку с другим полем типа varchar. (Я знаю, что это идиот, потому что они должны быть одного типа и т. Д., Но я не могу изменить дизайн базы данных).

ответ

3

Зуй,

Существует продукт (который я не имею никакой связи с), который переводит запросы T-SQL в запросы Linq. Имя Linqer (http://www.sqltolinq.com/). Это очень недорого и помогло мне в преобразовании некоторых из моих более сложных запросов.

Рэнди

+1

Использование Linqer, я напечатал в следующем запросе: Select Str (Id, 2) из ​​Master.Enterprise Linqer создал следующее: из т в db.Master_Enterprise выберите новый { COLUMN1 = string.Format ("{0: 0}", t.ID) } –

+0

string.Format works. Спасибо! http://msdn.microsoft.com/en-us/library/fht0f5be.aspx – theShingles

0

Первое, что приходит на ум, это ToString().

Смотрите ссылку на некоторые примеры того, как форматировать его по своему вкусу, или обратитесь к следующему:


Однако ваше заявление здесь приводит меня к вопросу, действительно ли вы хотите строку или нет:

Я пытаюсь явно указать число десятичных знаков для поля.

Возможно, вы можете уточнить, что именно вы пытаетесь сделать?

+0

Я попытался .ToString («N2»), который является именно то, что я хочу, но LINQ не в состоянии перевести его. – theShingles

+1

Почему вы не берете номер, как есть, из базы данных, а затем конвертируете его в строку при ее отображении? –

+0

Хммм, подумав об этом, я должен это сделать. Спасибо за помощь. – theShingles