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

从空列表中读取空 DateTime

从空列表中读取空 DateTime

C#
料青山看我应如是 2022-06-18 17:07:18
我正在尝试使用 Mvc5 从空列表中读取空日期时间List<TelecomPayments> telPayments =     db.TelecomPayments        .Where(t => t.TelecomAdmin.TelecomAdminID == telecomAdmin.TelecomAdminID)        .ToList();telPayments.FirstOrDefault();DateTime? lastDate = telPayments.FirstOrDefault().ToDate;if (lastDate == null){    if (telPayments.Count == 0)    {    }}这是我在控制器中指定的,但仍然通过补偿
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

使用 LINQ 时,有两组函数:返回IEnumerable<...>(or IQueryable<...>) 的函数和返回 a的函数TResult

如果您编写 LINQ 语句,请始终确保所有中间 LINQ 语句都返回IEnumerableIQueryable,只有最后一个可能是FirstOrDefaultToListMax,Any等。

DateTime? lastDate = telPayments
    .Select(telpayment => telpayment.ToDate)
    .FirstOrDefault();


查看完整回答
反对 回复 2022-06-18
?
慕标5832272

TA贡献1966条经验 获得超4个赞

如果您使用的是 C# 6 或更高版本,则可以使用?。又名“空条件”运算符:


List<TelecomPayments> telPayments = 

    db.TelecomPayments

        .Where(t => t.TelecomAdmin.TelecomAdminID == telecomAdmin.TelecomAdminID)

        .ToList();


DateTime? lastDate = telPayments.FirstOrDefault()?.ToDate;

这只会.ToDate在它之前的部分不为空时尝试访问。


如果您使用的是较旧的 C# 版本,则必须进行更明确的 null 检查:


List<TelecomPayments> telPayments = 

    db.TelecomPayments

        .Where(t => t.TelecomAdmin.TelecomAdminID == telecomAdmin.TelecomAdminID)

        .ToList();


DateTime? lastDate = null;

var payment = telPayments.FirstOrDefault();

if (payment != null) lastDate = payment.ToDate;


查看完整回答
反对 回复 2022-06-18
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号