对不起,我是C#的新手。我从sqlserver获取数量值。通常,它以十进制字符串形式出现。例如“ 6.00”。我必须将其作为int存储在C#变量中。我正在执行以下工作,这些工作已处理了我测试过的几行数据:
int newVal =
Convert.ToInt32(Convert.ToDecimal(drUsers["quantity"].ToString()));
如果我直接转换为int而不先将其转换为十进制,则抛出“输入格式不正确”错误。有没有更好的方法,尤其是处理数据错误,例如来自数据库的空值。
谢谢
答案 0 :(得分:1)
我会避免使用ToSring()
。您可以使用Field method将quantity
用作小数。
Convert.ToInt32(drUsers.Field<decimal>("quantity"));
答案 1 :(得分:1)
如果您确定要获取的值将是小数,则可以使用
int newVal = (int)Decimal.Parse(drUsers["quantity"]);
如果您希望安全并且可以进行防御性编程,建议您使用Decimal.TryParse()
类似于以下内容:
decimal foo = 0;
int newVal = 0;
if(Decimal.TryParse(drUsers["quantity"], out foo) {
newVal = (int)foo;
} else {
//handle error
}
编辑:将双精度转换为十进制,但是我认为选择取决于您需要十进制的精度。数据库类型并不总是与C#中的类型1:1匹配,因此两者都可以。