我在 SO 上看到过很多很多版本,但似乎没有一个能完全满足我的需求。
我的数据来自供应商数据库,该数据库允许日期时间字段为空。首先,我将数据放入数据表中。
using (SqlCommand cmd = new SqlCommand(sb.ToString(), conn))
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
我正在将 DataTable 转换为 List 进行处理。
var equipment = from i in dt.AsEnumerable()
select new Equipment()
{
Id = i.Field<string>("ID"),
BeginDate = i.Field<DateTime>("BeginDate"),
EndDate = i.Field<DateTime>("EndDate"),
EstimatedLife = i.Field<double>("EstimatedLife")
}
那么,在这种情况下如何检查 DBNull 呢?我尝试写一个方法。
public DateTime CheckDBNull(object dateTime)
{
if (dateTime == DBNull.Value)
return DateTime.MinValue;
else
return (DateTime)dateTime;
}
Use IsDBNull()
System.Convert.IsDBNull(value);
或者如果你有SqlDataReader
reader.IsDBNull(ordinal);
并让你的DateTime
属性可为空(DateTime?
)并设置null
的情况下DBNull
. Field<T>()
会自动执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)