我有一个十进制数字例如:-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");
}
答案 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") : "";
}