我尝试使用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)
{
}
}
这是我在控制器中指定的,但仍通过求和
答案 0 :(得分:1)
使用LINQ时,有两组函数:返回IEnumerable<...>
(或IQueryable<...>
)的函数和返回TResult
的函数。
如果编写LINQ语句,请始终确保所有中间LINQ语句都返回IEnumerable
/ IQueryable
,只有最后一个可能是FirstOrDefault
,ToList
,{ {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;