如何将此列的值转换为整数?

7

我的C#代码如下:

myNum = dt.Columns[0];

myNum是一个整数,dt是一个数据表。dt的第0列的值是一个字符串("12"),但我想将其转换为整数。该怎么做? 我已经尝试过:

myNum = int.Parse(dt.Columns[0]);

...但是那行不通。有什么想法吗?


3
“但那行不通”... 你能更具体一点吗? - Lazarus
为什么你说它不工作?它抛出了异常吗? - pierroz
当我尝试使用 int.Parse 时,编辑器(Visual Studio)会抱怨。它说:“‘int.Parse(string)’的最佳重载方法匹配具有一些无效参数”。 - Kevin
5个回答

32

这些值是按行而不是列存储的。请改用以下方法:

myNum = int.Parse(dt.Rows[0][0].ToString());

最好使用int.TryParse(..),除非您确信该值始终为int。 - Dan Diplo
是的,我非常确定该值始终为整数。 - Kevin

9

你的解析器没有正常工作,因为解析方法需要一个字符串,但数据返回的是一个简单的对象。

此外,数据是按行排列的,所以你有两个选择(我更喜欢第一种):

// This converts the object directly to an integer
myNum = Convert.ToInt32(dt.Rows[0][0]); 

// This converts the object to a string, and then parses it into an integer
myNum = int.Parse(dt.Rows[0][0].ToString()); 

你可能需要测试空值,也可能不需要。 - SeaDrive

3
如果Parse抛出异常,这意味着dt.Columns [0]不是有效的输入。如果您想避免异常,可以使用int.TryParse,它返回一个布尔值,告诉是否成功进行转换。
编辑:顺便说一句,Darin一定是正确的:您的值不是存储在列中而是存储在单元格中。

1
使用TryParse方法解析Value的值:
int myNum = 0;
int.TryParse(dt.rows[0][0].ToString() , out myNum);

使用上述代码,如果发生错误,变量的值将为零。

0
Convert.ToInt32(dt.Rows[0][0])

如果你需要处理各种类型,例如双精度浮点数(1.0),那么上述方法会更好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接