c# - 处理 DateTime DBNull

标签 c# datetime dbnull

我在 SO 上看到过很多很多版本,但似乎没有一个能完全满足我的需要。

我的数据来自允许日期时间字段为空的供应商数据库。首先,我将数据提取到 DataTable 中。

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;
    }

最佳答案

使用 IsDBNull()

System.Convert.IsDBNull(value);

或者如果你有一个 SqlDataReader

reader.IsDBNull(ordinal);

并让你的 DateTime属性可为空 ( DateTime? ) 并设置 null如果是 DBNull . Field<T>()将自动执行此操作。

关于c# - 处理 DateTime DBNull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3978815/

相关文章:

c# - 协变对象初始值设定项?

c# - 你如何使用出生日期计算 C# 中的年龄(考虑闰年)

c# - DBNull的简洁用法? (三元?)

python - 将 csv 中的数据和时间列转换为相对时间

.net - 如何在 XSD 数据集中处理 DBNull 到 bool 值的转换?

wcf - System.DBNull 与 WCF 中不期望的数据协定名称

c# - 查找字符串数组的哪个单元格包含文本的最佳方法

c# - 将派生类添加到 DataGridView 的绑定(bind)源

c# - 如何自动化 ASP.NET 网站停机消息

javascript - 为什么这个日期转换需要在月份上加1?