我对合并和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
。关于c# - 使用Lambda表达式和合并功能获取数据库数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40042820/