无法将十进制数转换为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");
}
由于加载了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") : "";
}