通过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
没有预约,我出于同样的原因插入第二个?
。
那么我的问题是:我做错了什么?这可能吗?提前谢谢大家
问题是当您调用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();