Нет перегрузки для метода «ToString» принимает 1 аргумент

Вопрос:У меня есть считыватель данных для чтения данных из базы данных. Я читаю TotalPrice из таблицы продаж. Я хотел бы показать общую цену как 2 десятичных разряда. В коде есть ссылка: TotalPrice.Text = myReader["TotalPrice"].ToString("N2"); Однако я обнаружил эту ошибку: никакой перегрузки для метода "ToString" не принимает 1 аргумент Что не так с кодом? Лучший ответ:

Вопрос:

У меня есть считыватель данных для чтения данных из базы данных.
Я читаю TotalPrice из таблицы продаж.
Я хотел бы показать общую цену как 2 десятичных разряда.

В коде есть ссылка:

TotalPrice.Text = myReader[«TotalPrice»].ToString(«N2»);

Однако я обнаружил эту ошибку: никакой перегрузки для метода “ToString” не принимает 1 аргумент
Что не так с кодом?

Лучший ответ:

Предполагая, что TotalPrice является столбцом Decimal, а myReader – DataReader:

TotalPrice.Text = myReader.GetDecimal(myReader.GetOrdinal(«TotalPrice»)).ToString(«N2»);

Идея здесь в том, что myReader indexer (то, что вы используете, когда вы вызываете myReader[«TotalPrice»]) возвращает объект. Это необходимо, поскольку во время компиляции не известно, какой тип столбца. Используя .GetDecimal(), вы подтверждаете, что возвращаете значение Decimal или ошибку.

Перегрузка .ToString, которая принимает строку формата, объявляется в Decimal, а не в Object. Объект. ToString не принимает аргументов.

Внутренний вызов GetOrdinal возвращает индекс поля с именем name – если вы делаете это в цикле для нескольких строк данных, вы, вероятно, захотите кэшировать это в переменной.

Ответ №1

String.Format() выполнит трюк. F2 – обозначение с фиксированной точкой с 2 ​​знаками после запятой.

TotalPrice.Text = string.Format(«{0:F2}», (double)myReader[«TotalPrice»]);

Оцените статью
Добавить комментарий