正在检查返回的项是否为null
本文关键字:是否 null 检查 返回 | 更新日期: 2023-09-27 18:26:57
目前我正在返回一个项目列表,所有项目都有一个日期范围。有些预约已经过期,有些还没有预约。我正在显示尚未过期的约会。但我想检查一下是否所有申请都已过期,然后显示第一项。
var curApt = myAppts.Where(d => d.Appt.EndTime > DateTime.UtcNow).First();
如果myAppts.Where(d => d.Appt.EndTime > DateTime.UtcNow) == null
var curApt = myAppts.First();
我如何构建这两种情况?
FirstOrDefault
和零合并运算符(??
):
var curApt = myAppts.FirstOrDefault(d => d.Appt.EndTime > DateTime.UtcNow)
?? myAppts.First();
然而,如果你有一个默认值来显示,你可以让这种情况更不容易发生异常。如果根本没有预约,你可以为此链接空合并运算符:
var curApt = myAppts.FirstOrDefault(d => d.Appt.EndTime > DateTime.UtcNow)
?? myAppts.FirstOrDefault() ?? yourDefault;
您可以使用FirstOrDefault
方法:
var curApt = myAppts.FirstOrDefault(d => d.Appt.EndTime > DateTime.UtcNow);
查找第一个未过期的约会,如果所有约会都已过期,则查找null
。因此,在这种情况下,要将其默认为第一次约会,您可以使用以下命令:
var curApt = myAppts.FirstOrDefault(d => d.Appt.EndTime > DateTime.UtcNow);
if (curApt == null)
{
curApt = myAppts.First();
}
或者,为了简洁起见,您可以使用空合并运算符(??
):
var curApt = myAppts.FirstOrDefault(d => d.Appt.EndTime > DateTime.UtcNow)
?? myAppts.First();
听起来你想在这里使用.FirstOrDefault()
:
var curApt = myAppts.Where(d => d.Appt.EndTime > DateTime.UtcNow).FirstOrDefault();
if (curApt == null) {
// no expirations
curApt = myAppts.First();
}
使用FirstOrDefault()而不是First(),在第一条语句之后检查curApt是否为null,如果为null,则检查第二条语句。