0

我有一个方法可以将数据表从 LINQ 返回到 SQL

IE

 public static DataTable LinqToDataTable<T>(IEnumerable<T> source)
   {
       DataTable output = new DataTable();
       try
       {
           PropertyInfo[] properties = typeof(T).GetProperties();
           foreach (var prop in properties)
           {
               output.Columns.Add(prop.Name, Nullable.GetUnderlyingType(
               prop.PropertyType) ?? prop.PropertyType);
           }
           foreach (var item in source)
           {
               DataRow row = output.NewRow();
               foreach (var prop in properties)
               {
                   row[prop.Name] = prop.GetValue(item, null) ?? DBNull.Value;
               }
               output.Rows.Add(row);
           }
       }
       catch (Exception ex)
       {
           MessageBox.Show(ex.Message);
       }
       return output;
   }

我的问题是,如果任何 DateTime 字段为空,则此方法会引发异常

The null value cannot be assigned to a member with type System.DateTime which is a non-nullable value 

类型。

如何纠正错误。请任何人帮助我

4

1 回答 1

1

将属性声明为 DateTime 怎么样?. 无论您在哪里拥有日期时间属性,都可以将类型更改为 DateTime?从日期时间。

您创建了一个 DateTime 类型的列,并尝试将 null 设置为该列。

于 2013-02-25T12:12:25.747 回答