我有一个具有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.
什么是正确的选择的任何想法?
谢谢
那是因为Time2是一个可以为空的类型.可空类型始终具有值属性.如果您修改您的行:
Time2 = (a.Time2).Value
Run Code Online (Sandbox Code Playgroud)
然后在Value之后按句点符号,你会看到Intellisense弹出.
作为安全检查,您可能还需要在使用.Value之前检查a.Time2的值是否为null.否则,您将获得空引用异常