如何从DataRow单元格解析int值?
Int32.Parse(item["QuestionId"].ToString());
这段代码可以运行,但是看起来太啰嗦了。 还有,能否处理 DBNull 值?
如何从DataRow单元格解析int值?
Int32.Parse(item["QuestionId"].ToString());
这段代码可以运行,但是看起来太啰嗦了。 还有,能否处理 DBNull 值?
如果你知道它是一个 int
,那么你应该根据需要将其转换为 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"]);
Field
是一个扩展方法,它是在3.5版本中添加的。 - slothField<T>
方法是一个扩展方法,仅在 .NET 3.5+ 中可用。 - Trevor Pilleyint? questionId = item.Field<int?>("QuestionId");
这样写是否可以安全地处理 DbNull
值? - Sanjeev Rai如果放入单元格中的内容实际上只是一个int
,则使用:
(int)item["QuestionId"]
否则,检查值item["QuestionId"]
的运行时类型,如果是byte
,那么使用(byte)item["QuestionId"]
。 如果不确定,则:
Convert.ToInt32(item["QuestionId"])
这样做也许能够运行,但这种方法不够优雅。
null
时返回默认值,请考虑使用 (int?)item["QuestionId"]
。 - Jeppe Stig Nielsen
QuestionId
的类型实际上是否类似于字符串,例如VARCHAR
? - Matthias Meidint.Parse
来完成,而当它已经是数字类型时,Jeppe的解决方案更好。 - Matthias Meid