нет перегрузки для метода "ToString" принимает 1 аргумент - PullRequest
8 голосов
/ 01 февраля 2012

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

Код является чем-то вроде ссылки:

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

Однако я включил эту ошибку: никакая перегрузка для метода "ToString" не принимает 1 аргумент. Что не так с кодом?

Ответы [ 2 ]

14 голосов
/ 01 февраля 2012

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

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

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

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

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

9 голосов
/ 01 февраля 2012

String.Format () добьется цели. F2 - запись с фиксированной запятой с двумя десятичными разрядами.

TotalPrice.Text = string.Format("{0:F2}", (double)myReader["TotalPrice"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...