C# 指定的强制转换无效。(datatable中的整数值)
我想检查datatable中的以下字段是否为空:C# 指定的强制转换无效。(datatable中的整数值),c#,asp.net,casting,datatable,null,C#,Asp.net,Casting,Datatable,Null,我想检查datatable中的以下字段是否为空: r.Field<int>("prod_type") if (r.Field<int>("prod_type") != null && !string.IsNullOrEmpty(r.Field<int>("prod_type").ToString())) r.字段(“产品类型”) 如果(r.字段(“产品类型”)!=null&& !string.IsNullOrEmpty(r.Fie
r.Field<int>("prod_type")
if (r.Field<int>("prod_type") != null &&
!string.IsNullOrEmpty(r.Field<int>("prod_type").ToString()))
r.字段(“产品类型”)
如果(r.字段(“产品类型”)!=null&&
!string.IsNullOrEmpty(r.Field(“prod_type”).ToString())
但我有以下例外:
指定的强制转换无效
如何检查数据表中的整数值是否为null或空?您得到的错误表明数据表中的字段不是
int
类型。如果它的类型是int
它不能保持空值,您可以尝试使用int?
这是一种
r.Field(“产品类型”)!=无效的
扩展方法支持可为空的类型。用于检查可空值是否为空:
if (r.Field<int?>("prod_type").HasValue)
if(r.Field(“产品类型”).HasValue)
如果prod\u type
确实是数据库中的int
字段,请尝试如下操作:
if (r.Field<int?>("prod_type") != null)
if(r.Field(“产品类型”)!=null)
@just\u name,那么它是int?
,可以为null的int非常感谢。我可以将此方法用于任何类型,如byte[]
,例如:r.Field(“doc\u signed”)。HasValue
?@just\u name:是的,带有任何字符。默认情况下,字符串等引用类型是可为空的类型。hmmm我找不到HasValue
r.Field(“doc_signed”)。HasValue
这是否语法正确?@just_name:抱歉,我忽略了数组,任何数组都是引用类型,即使包含的类型是值类型。因此,可以使用r.Field(“doc\u signed”)
创建一个可为空的字节,但不能使用数组。这是一个引用类型,默认情况下可以为空:如果(r.Field(“prod_type”)!=null)
。
if (r.Field<int?>("prod_type") != null)