在Lambda表达式中强制转换可为空的DateTime

M. *_*Ozn 0 c# asp.net-mvc entity-framework-6

我想使用EF6从数据库CALENDRIER中获取2019年的所有对象,但是EF6生成可为空的DateTimes“ DateTime?”。而不是通常的DateTimes。因为我只想要年份,所以可以使用DateTime中的Year字段来过滤列表,但是它不适用于可为null的DateTime。基本上我想这样使用它:

_db.CALENDRIERs.Where(c => c.CALE_DATE.Year == year).ToList();
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

'约会时间?' 不包含“年”的定义,并且没有可访问的扩展方法“年”接受类型为“ DateTime?”的第一个参数。可以找到...

如何在lambda表达式中隐式转换它们?

and*_*952 5

首先检查CALE_DATE是否具有值,然后使用.Value

_db.CALENDRIERs.Where(c => c.CALE_DATE.HasValue && c.CALE_DATE.Value.Year == year).ToList();
Run Code Online (Sandbox Code Playgroud)