方法“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的索引器(当你调用myReader["TotalPrice"]时使用的是什么myReader["TotalPrice"] )返回一个Object。 它必须,因为它在编译时不知道列是什么类型。 通过使用.GetDecimal() ,您可以确保获得十进制值或错误。

采用格式字符串的.ToString重载在Decimal上声明,而不是在Object上声明。 对象的。 ToString不带参数。

对GetOrdinal的内部调用返回给定名称的字段索引 – 如果您在多个数据行的循环中执行此操作,您可能希望将其缓存在变量中。

String.Format()可以解决这个问题。 F2是定点表示法,带有2位小数。

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