使用EF6,我想从数据库CALENDRIER中获取2019年的所有对象,但是EF6生成可为空的DateTimes“ DateTime?”。而不是通常的DateTimes。因为我只想要年份,所以可以使用DateTime中的Year字段来过滤列表,但是它不适用于可为null的DateTime。基本上我想这样使用它:
_db.CALENDRIERs.Where(c => c.CALE_DATE.Year == year).ToList();
但是出现以下错误:
“ DateTime?”不包含“年”的定义,并且没有可访问的扩展方法“年”接受类型为“ DateTime?”的第一个参数。可以找到...
如何在lambda表达式中隐式转换它们?
答案 0 :(得分:5)
首先检查CALE_DATE是否具有值,然后使用.Value
_db.CALENDRIERs.Where(c => c.CALE_DATE.HasValue && c.CALE_DATE.Value.Year == year).ToList();
答案 1 :(得分:1)
您必须访问可为空类型的Value
字段:
DateTime? nullableDt = DateTime.Now;
int year = nullableDt.Value.Year;
答案 2 :(得分:0)
您可以先检查DateTime对象是否不为null,即它具有值,然后可以从中获取Year属性。
_db.CALENDRIERs.Where(c => c.CALE_DATE.HasValue && c.CALE_DATE.Year == year).ToList();