关于实体框架:在Linq中,.FirstOrDefault和.SingleOrDefault之间的区别是什么

In Linq, what's the difference between .FirstOrDefault and .SingleOrDefault

我不知道FirstOrDefaultSingleOrDefault的区别。我应该什么时候用第一个?什么时候用第二个?


FirstOrDefault()用于输入集合中预期出现零个或多个结果,如果有多个结果,调用将返回第一个项目,如果没有,则默认。

SingleOrDefault()用于输入集合中预期结果为零或一个时,如果正好有一个结果,则调用返回一个结果;如果没有结果,则默认;如果有多个结果,则异常。


如果存在多个项,singleOrDefault将引发"sequence contains more one element"异常。


first或default它将占用行数,但如果是,则只返回其中的第一行。空它可以处理异常首先,它需要行数,但如果是,它只返回第一行。空它将引发异常singleOrDefault它只需要一行,但如果为空则返回它可以处理异常。单个它将只占用一行,但将返回它&;无法处理异常

如果结果集返回0条记录:

singleOrDefault返回类型的默认值(例如,int的默认值为0)FirstOrDefault返回类型的默认值如果结果集返回1条记录:

singleOrDefault返回该记录FirstOrDefault返回该记录如果结果集返回许多记录:

singleOrDefault引发异常FirstOrDefault返回第一条记录结论:

如果希望在结果集包含多个记录时引发异常,请使用singleOrDefault。

如果无论结果集包含什么,始终需要1条记录,请使用FirstOrDefault