如何从 DataRow 单元格中解析 int 值?
Int32.Parse(item["QuestionId"].ToString());
这段代码有效,但看起来太冗长了。也可以处理 DBNull 值吗?
如何从 DataRow 单元格中解析 int 值?
Int32.Parse(item["QuestionId"].ToString());
这段代码有效,但看起来太冗长了。也可以处理 DBNull 值吗?
如果你知道这是一个int
你应该相应地转换它,这是最安全和最有效的方法:
int questionId = item.Field<int>("QuestionId"); // similar to (int) item["QuestionId"]
该Field
方法还支持可空类型,因此如果它可以为空:
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"]);
如果放入该单元格的内容实际上只是一个int
,请使用:
(int)item["QuestionId"]
否则,检查 value 的运行时类型item["QuestionId"]
,如果是byte
例如,则使用(byte)item["QuestionId"]
。如果你不确定,那么:
Convert.ToInt32(item["QuestionId"])
可能会起作用,但这不那么优雅。