我对合并和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/

10-11 19:02