2013-04-11 95 views
0

我有以下代码:数据库日期时间空手柄

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领域它抛出异常的空值:

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

例外:不能投DBNull.Value键入“ System.DateTime的”。请使用可空类型。

如何处理?

+1

那么什么是'UpdatedOn'数据类型,您将需要为'日期时间?' – V4Vendetta 2013-04-11 09:00:41

+0

完美!我得到了谢谢@ V4Vendetta – 2013-04-11 09:31:51

回答

0

使用Nullable<DateTime>DateTime?

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

row.Field (“UpdatedOn”)不工作,我已经试过这个。如何在我的情况下使用Nullable ? – 2013-04-11 08:57:34

+1

@NomiAli,'Nullable '与'DateTime?'相同,后者只是语法suger,您需要确保您的'UpdatedOn'也被定义为'DateTime?',或者您需要对照' null“,然后为'UpdatingOn'分配一些默认值。 – Habib 2013-04-11 09:00:24

+1

确保UpdatedOn在实体数据模型中定义了Nullable。 – 2013-04-11 09:04:58

1

UpdatedOn可为空或

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

@Habib感谢您指出,更新 – Damith 2013-04-11 09:08:45