转换为值类型'System.Datetime'失败,因为实现值为null

Lea*_*dro -1 .net c# linq null datetime

我知道这个错误很常见,但我无法用一个数据和DateTime类型处理它.

这是我的LINQ:

var lastDate = (
    from t in context.table select t.CreatedOn
).Max();
Run Code Online (Sandbox Code Playgroud)

我需要的是获取last DateTime(CreatedOn)字段获取行的最大值.
事情就是崩溃,因为表是空的,我无法在catch异常之前处理null.有了它的数据.

更新:
如果无法获取日期时间,则预期结果为"null".

有了Pikoh评论,我可以做到,但是现在我和一个有条件的linq有同样的错误(在哪里)

                        lastDateWithCriteria= (
          from t in context.table
where criteria == "value"
          select t.CreatedOn).Max();
                    }
Run Code Online (Sandbox Code Playgroud)

小智 6

你能做的一件事是......

var lastDate = (
    from t in context.table select (DateTime?)t.CreatedOn
).Max();
Run Code Online (Sandbox Code Playgroud)

使用此强制转换,您可以告诉您的代码,CreatedOn字段现在可以为null.

如果需要,您甚至可以在值为null时传递默认值...

var lastDate = (
        from t in context.table select (DateTime?)t.CreatedOn
    ).Max() ?? DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

我希望有所帮助.