【问题标题】:DataBase datetime null handle数据库日期时间空句柄
【发布时间】:2013-04-11 08:54:33
【问题描述】:

我有以下代码:

var distinctRows = 
      (from row in ds.GetTable(this.TagShortName).AsEnumerable()
         select new Audit    
          {
             ID =row.Field<long>("ID"),
             UpdatedBy =string.Format("{0} {1}", 
                                      row.Field<string>("UpdatedByFirstName"),
                                      row.Field<string>("UpdatedByLastName")),
             UpdatedOn = ow.Field<DateTime>("UpdatedOn")
          }).Distinct(new AuditComparer());

当我在 UpdateOn 字段中有 null 值时,它会抛出异常:

UpdatedOn =row.Field<DateTime>("UpdatedOn")

异常:无法将 DBNull.Value 转换为类型“System.DateTime”。请使用可空类型。

如何处理?

【问题讨论】:

  • 那么UpdatedOn 数据类型是什么,您需要将其设为DateTime?
  • 完美!我明白了,谢谢@V4Vendetta

标签: c# asp.net .net sql database


【解决方案1】:

使UpdatedOn 可以为空或

UpdatedOn = row.Field<DateTime?>("UpdatedOn")?? DateTime.MinValue

【讨论】:

    【解决方案2】:

    使用Nullable&lt;DateTime&gt;DateTime?

    UpdatedOn = row.Field<DateTime?>("UpdatedOn")
    

    【讨论】:

    • row.Field("UpdatedOn") 不工作我已经尝试过了。在我的情况下如何使用 Nullable
    • @NomiAli, Nullable&lt;DateTime&gt;DateTime? 相同,后者只是语法糖,您需要确保您的UpdatedOn 也定义为DateTime?,否则您需要对照null 检查它,然后为UpdatedOn 分配一些默认值。
    • 确保 UpdatedOn 在实体数据模型中定义为 Nullable。
    • 谢谢你!实际上,我的 UpdatedOn 在实体中不可为空。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    相关资源
    最近更新 更多