所有,我试图找到一种优雅的方法来从DataRow
中检索价值。以下是我尝试过的方式。请检查一下。我认为这还不够好。因为当我想要检索的字段数量很大时会很冗长。有什么好主意吗?感谢。
int result = -1;
if (row["intCol"] != null)
{
bool bresult = int.TryParse(row["intCol"].ToString(), out result);
}
更新
DB中的intCol
数据类型是可以为空的字符串。
更新
从Most efficient way to check for DBNull and then assign to a variable?
找到它干杯。
答案 0 :(得分:2)
使用Field
,IsNull
,SetField
方法避免处理DBNull.Value
。
在您发布的示例中,您可能只需要Field
:
int? result = row.Field<int?>("intCol");
// if intCol is DBNull.Value, result will now be null.
答案 1 :(得分:1)
您可以使用内置的Field<int?>
属性来获取结果:
var result = row.Field<int?>("intCol");
答案 2 :(得分:1)
你可以使用Convert(特别是如果类型也可能是BIGINT,SMALINT,..)。
var i = Convert.ToInt32(row["intCol"]); // i is a int
请注意将NULL转换为0。
如果您非常确定数据库类型是INT(而不是BIGINT,SMALINT,..),请使用“as”(DB NULL将成为空引用)
var i = row["intCol"] as int?; // i is a nullable int