为了账号安全,请及时绑定邮箱和手机立即绑定

在 lambda 表达式中转换可为 null 的 DateTime

在 lambda 表达式中转换可为 null 的 DateTime

C#
绝地无双 2023-07-09 16:20:10
使用 EF6,我想从数据库 CALENDRIER 获取 2019 年的所有对象,但 EF6 生成可为 null 的 DateTimes "DateTime?" 而不是通常的日期时间。因为我只需要年份,所以我可以使用日期时间中的年份字段来筛选列表,但它不适用于可为空的日期时间。基本上我想这样使用它:_db.CALENDRIERs.Where(c => c.CALE_DATE.Year == year).ToList();但我收到以下错误:'约会时间?' 不包含“Year”的定义,并且没有可访问的扩展方法“Year”接受“DateTime?”类型的第一个参数 可以找到...如何将它们隐式地投射到我的 lambda 表达式中?
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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

_db.CALENDRIERs.Where(c => c.CALE_DATE.HasValue && c.CALE_DATE.Value.Year == year).ToList();



查看完整回答
反对 回复 2023-07-09
?
守着一只汪

TA贡献1872条经验 获得超3个赞

您必须访问可Value为空类型的字段:


DateTime? nullableDt = DateTime.Now;

int year = nullableDt.Value.Year;


查看完整回答
反对 回复 2023-07-09
?
Helenr

TA贡献1780条经验 获得超3个赞

您可以首先检查 DateTime 对象是否不为 null,即它是否有值,然后您可以从中获取 Year 属性

_db.CALENDRIERs.Where(c => c.CALE_DATE.HasValue && c.CALE_DATE.Year == year).ToList();


查看完整回答
反对 回复 2023-07-09
  • 3 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信