【发布时间】:2018-10-18 10:40:04
【问题描述】:
我们有一个自定义对象,我正在尝试从数据集中分配和填充。除非日期时间字段中有 NULL 值,否则它工作正常。
这是对象示例:
public class Test
{
public DateTime Date1{ get; set; }
public DateTime Date2{ get; set; }
}
我们想知道如何最好地通过解析分配任何值为 null 的值:
var convertedList = (from rw in ds.Tables[0].AsEnumerable()
select new Test()
{
Date1 = Convert.ToDateTime(rw?["StartDate"]),
Date2 = Convert.ToDateTime(rw?["EndDate"])
}).ToList();
以下内容在 null 时抛出异常(应该如此)。只是想知道处理这个问题的最佳实践吗?请注意,由于外部应用程序,我们不能使用可为空的日期时间(日期时间?)。
理想情况下,如果为空,我们不希望指定日期时间
【问题讨论】:
-
Idealy, we would not want to assign the datetime if null如果它不能为空,它需要某种形式的值(即使它只是MinValue或MaxValue)。你希望它有什么价值? -
我们存储为日期,而不是可以为空的日期。问题是,结束日期有时不会在数据库中分配任何值。
-
那么不需要调用
Convert.ToDateTime(如果已经是DateTime)。你能回答我第一条评论中的问题吗? -
we are storing as dates, just not nullable dates.如果不是数据库中可以为空的数据,rw?["StartDate"]如何返回null? -
外部应用的约束是什么?可以不使用可以为空的 DateTime 类型,还是只有值为 null 时才有问题?您可以创建属性
DateTime?并实现get以返回您选择的默认值(如果为空)。