从DataRow单元解析int

Ant*_*ony 12 c#

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

Int32.Parse(item["QuestionId"].ToString());
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但看起来太冗长了.还可以处理DBNull值吗?

Tim*_*ter 24

如果你知道它是一个int你应该相应地投射它,那是最安全和最有效的方法:

int questionId = item.Field<int>("QuestionId");  // similar to (int) item["QuestionId"]
Run Code Online (Sandbox Code Playgroud)

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

int? questionId = item.Field<int?>("QuestionId");
if(questionId.HasValue) Console.Write(questionId.Value);
Run Code Online (Sandbox Code Playgroud)

如果它实际上是string(为什么?)你必须将其投射string并使用int.Parse:

int questionId = int.Parse(item.Field<string>("QuestionId"));
Run Code Online (Sandbox Code Playgroud)

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

int questionId = System.Convert.ToInt32(item["QuestionId"]);
Run Code Online (Sandbox Code Playgroud)


Jep*_*sen 7

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

(int)item["QuestionId"]
Run Code Online (Sandbox Code Playgroud)

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

Convert.ToInt32(item["QuestionId"])
Run Code Online (Sandbox Code Playgroud)

可能会工作,但那不太优雅.