无法将十进制数转换为SqlDecimal

本文关键字:SqlDecimal 转换 十进制数 | 更新日期: 2023-09-27 18:26:19

我有一个十进制数,例如:-80.63存储在字段"myvalue"中。每当我试图将其转换为sqldecimal时,我都会收到以下错误:

*无法将"myvalue"取消框为"System.Data.SqlTypes.SqlDecimal"*

代码如下:

String MyString = ((SqlDecimal)myvalue).Value.ToString("N");

据我所知,小数不应该是精度错误(正数也会出现这种情况)。所以我的问题是:是什么导致了这个错误?

正如在评论中所问:myvalue是数据表的一部分(例如datatable mytable,myvalue中的内容是列值之一):

foreach (DataRow detail in myDataTable)
{
    var myvalue = detail["Sum"];
    String MyString = ((SqlDecimal)myvalue).Value.ToString("N");
}

无法将十进制数转换为SqlDecimal

由于加载了sql中的数据,我看到的只是"对象"转换为数据表。

然后使用DataRow.Field扩展方法来获得decimal值。

例如:

foreach (DataRow detail in myDataTable)
{
    decimal myvalue = detail.Field<decimal>("Sum");
    string valueToDisplay = myvalue.ToString("N");
}

请注意,它甚至支持null,因此如果列可以包含NULL s:

foreach (DataRow detail in myDataTable)
{
    decimal? myvalue = detail.Field<decimal?>("Sum");
    string valueToDisplay = myvalue.HasValue ? myvalue.Value.ToString("N") : "";
}