从空列表中读取空的DateTime

时间:2018-12-18 06:37:00

标签: c# linq

我尝试使用Mvc5从空列表中读取Null dateTime

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 个答案:

答案 0 :(得分:1)

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

如果编写LINQ语句,请始终确保所有中间LINQ语句都返回IEnumerable / IQueryable,只有最后一个可能是FirstOrDefaultToList,{ {1}},Max

Any

简单的漫画卓悦!

答案 1 :(得分:0)

如果您使用的是C#6或更高版本,则可以使用?. aka "null conditional" operator

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;