通过lambda表达式和合并使用db获取数据

本文关键字:db 获取 数据 合并 lambda 表达式 通过 | 更新日期: 2023-09-27 18:13:01

我有一个关于合并和lambda表达式的问题。我从SQLite数据库中读取一些记录,但并不总是有一些。例如

return db.GetItems<Appointment>().Where(l => l.AppointmentId == appointmentId).First();

如果没有预约,我收到一个错误

序列不包含元素

我同意。然后我尝试改变表达式

return db.GetItems<Appointment>()?.Where(l => l.AppointmentId == appointmentId)?.First();

我认为第一个?,如果没有约会函数返回null。如果where没有预约,我出于同样的原因插入第二个?

那么我的问题是:我做错了什么?这可能吗?提前谢谢大家

通过lambda表达式和合并使用db获取数据

问题是当您调用First时序列为空,而不是null。您想要的是FirstOrDefault,当调用它的序列为空时,它将产生默认值(在本例中为null)。

return db.GetItems<Appointment>()
    .Where(l => l.AppointmentId == appointmentId)
    .FirstOrDefault();

您也不需要在GetItems之后的null条件运算符,因为它不应该返回null,可能是空序列,但不是null

使用FirstOrDefault代替First。如果序列包含没有元素,则返回默认值。而且你也不需要null条件运算符

return db.GetItems<Appointment>()
         .Where(l => l.AppointmentId == appointmentId)
         .FirstOrDefault();