从DataRow单元解析int

时间:2013-07-18 09:01:43

标签: c#

如何从DataRow单元格中解析int值?

Int32.Parse(item["QuestionId"].ToString());

此代码有效,但看起来过于冗长。 还可以处理DBNull值吗?

2 个答案:

答案 0 :(得分:23)

如果您知道它是int,您应该相应地进行投射,这是最安全和最有效的方法:

int questionId = item.Field<int>("QuestionId");  // similar to (int) item["QuestionId"]

Field方法也支持可空类型,因此如果它可以为null:

int? questionId = item.Field<int?>("QuestionId");
if(questionId.HasValue) Console.Write(questionId.Value);

如果它实际上是string(为什么?),则必须将其投放到string并使用int.Parse

int questionId = int.Parse(item.Field<string>("QuestionId"));

如果你真的不知道它的类型是什么,你可以使用System.Convert.ToInt32

int questionId = System.Convert.ToInt32(item["QuestionId"]);

答案 1 :(得分:7)

如果放入该单元格的内容实际上只是int,请使用:

(int)item["QuestionId"]

否则,请检查值item["QuestionId"]的运行时类型,如果它是byte,请使用(byte)item["QuestionId"]。如果您不确定,那么:

Convert.ToInt32(item["QuestionId"])

可能会奏效,但那不太优雅。