无法将十进制数转换为SqlDecimal

时间:2014-10-13 13:46:23

标签: c#

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

*无法将'myvalue'解包为'System.Data.SqlTypes.SqlDecimal'*

代码如下:

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

我理解十进制它不应该是一个精度错误(它也发生在正数btw)。所以我的问题是:导致此错误的原因是什么?

正如在评论中询问的那样:myvalue是数据表的一部分(例如DataTable mytable,其中myvalue中的内容是列值之一):

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

1 个答案:

答案 0 :(得分:1)

  

我所看到的只是"对象"感谢加载sql的数据   进入数据表。

然后使用DataRow.Field extension method获取decimal值。

例如:

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

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

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