Предполагая, что TotalPrice является десятичным столбцом, а myReader является DataReader:
TotalPrice.Text = myReader.GetDecimal(myReader.GetOrdinal("TotalPrice")).ToString("N2");
Идея заключается в том, что индексатор myReader (то, что вы используете при вызове myReader["TotalPrice"]
), возвращает объект.Это необходимо, поскольку во время компиляции он не знает, какой тип столбца.Используя .GetDecimal()
, вы гарантируете возвращение десятичного значения или ошибку.
Перегрузка .ToString
, которая принимает строку формата, объявляется как десятичная, а не как объект.Object. ToString
не принимает аргументов.
Внутренний вызов GetOrdinal возвращает индекс поля с указанным именем - если вы делаете это в цикле для нескольких строк данных, вы, вероятно, захотите его кэшировать впеременная.