我无法将十进制转换为十六进制。
这是我的代码:
select new
{
MessageID = table1.Field<Int32?>("MessageID"),
MessageIDHex = (String)table1.Field<Int32>("MessageID").ToString("X")
}
它给了我错误
DBNUll.Value无法更改为System.In32
所以我试过了
MessageIDHex= (String)table1.Field<Int32?>("MessageID").ToString("X")}
但它给了我另一个错误。
我该如何解决它,或者它有另一种解决方法。
答案 0 :(得分:2)
显然,MessageID
可以是DBNull。最简单的解决方案是将值读取为 nullable int(以防止发生转换错误)。如果您将Field
与可空类型一起使用,则DBNull
会自动转换为null
,然后可以使用??
运算符将其强制转换为0:
MessageIDHex = (table1.Field<Int32?>("MessageID") ?? 0).ToString("X")
或者,如果您愿意,可以将数据库结果中的DBNull值设为MessageIDHex
的空字符串或空字符串:
MessageIDHex = table1.IsNull("MessageID") ? "" : table1.Field<Int32>("MessageID").ToString("X")
MessageIDHex = table1.IsNull("MessageID") ? null : table1.Field<Int32>("MessageID").ToString("X")