无法将DBNull.Value强制转换为"System.DateTime".请使用可空类型

Mar*_*oli 2 .net c# sql sql-server-2008-r2

这是我的代码

var finalResults = (from r in results.AsEnumerable()
                    where r.Field<DateTime>("PrintTime") is DBNull
Run Code Online (Sandbox Code Playgroud)

where PrintTime是我的Sql Server 2008 r2数据库中的一列,它的类型是datetime可以为空的

我有这个例外:

无法将DBNull.Value强制转换为"System.DateTime".请使用可空类型.

你能帮帮忙吗?

Tim*_*ter 11

DataRow.Field支持可空类型,因此请使用DateTime?而不是DateTime:

var finalResults = from r in results.AsEnumerable()
                   let printTime = r.Field<DateTime?>("PrintTime")
                   where !printTime.HasValue
                   select r;
Run Code Online (Sandbox Code Playgroud)