linq在可空的日期时间

fre*_*hie 2 c# linq

我有一个具有Time1和Time2的表(为了示例).Time2允许空值.

我有一个对象模型,我希望Time2可以为空; 到目前为止我有这个:

public Class MyModel{
   public DateTime Time1 {get;set;}
   public System.Nullable<DateTime> Time2 {get;set}
}
Run Code Online (Sandbox Code Playgroud)

当我转到我的查询时,我有这个:

var MyQuery = ...
   select new MyModel()
   { 
      Time2 = (a.Time2)
Run Code Online (Sandbox Code Playgroud)

在这里我想知道我是否应该使用SingleOrDefault操作符?它没有在intellisense中显示.除此之外,intellisense还展示了其他几个选项,其中包括:HasValue,Value,GetValueOrDefault.

什么是正确的选择的任何想法?

谢谢

Sha*_*rde 8

那是因为Time2是一个可以为空的类型.可空类型始终具有值属性.如果您修改您的行:

Time2 = (a.Time2).Value
Run Code Online (Sandbox Code Playgroud)

然后在Value之后按句点符号,你会看到Intellisense弹出.

作为安全检查,您可能还需要在使用.Value之前检查a.Time2的值是否为null.否则,您将获得空引用异常