在LINQ中使用Nullable DateTime时可能出现InvalidOperationException

时间:2015-06-01 17:42:45

标签: c# linq

我有一些像这样定义的变量:

DateTime? tempDateTime;

我也有这样的查询:

var recordWithMinDatetime =
    locatedContracts.Where(t => t.OriginalDate.HasValue)
        .OrderBy(t => t.OriginalDate.Value)
        .FirstOrDefault();
    if (recordWithMinDatetime != null)
        tempDateTime = recordWithMinDatetime.OriginalDate.Value;

但是当我将鼠标悬停在最后一个作业上时,IDE表示"可能的InvalidOperationException"

我也安装了ReSharper,所以不确定它是来自R#还是VS IDE,但我仍然应该关注我的想法,但我不明白我做错了什么或者它提供了这个暗示的非安全代码?

1 个答案:

答案 0 :(得分:4)

这可能是R#错误。我会忽略它。您已通过检查LINQ查询中的OriginalDate.Value确保HasValue不会抛出异常。

R#试图提供帮助,可能需要这样的检查:

if (recordWithMinDatetime != null && recordWithMinDatetime.OriginalDate.HasValue)
    tempDateTime = recordWithMinDatetime.OriginalDate.Value;

但在你的情况下,这项检查是多余的。