我不知道FirstOrDefault
和SingleOrDefault
之间的区别。我何时应该使用第一个?何时应该使用第二个?
答案 0 :(得分:14)
FirstOrDefault()
用于预期输入集合中存在零个或多个结果,如果有多个结果,则调用返回第一个项目,如果没有则返回默认值。
SingleOrDefault()
用于输入集合中预期为零或一个结果,如果只有一个结果,则调用返回一个结果,如果没有结果,则返回Default;如果有多个结果,则返回异常。
答案 1 :(得分:7)
如果存在多个项目,SingleOrDefault将抛出“Sequence包含多个元素”异常。
答案 2 :(得分:0)
firstordefault它将占用行数,但如果是,则只返回其中的第一行 null它可以处理异常 首先它将占用行数,但如果是,则只返回其中的第一行 null它将抛出异常 singleordefault它只需要一行但会返回它可以处理异常,如果它是null 单个它只需要一行,但会返回它&无法处理异常
如果结果集返回0条记录:
SingleOrDefault返回类型的默认值(例如,int的默认值为0) FirstOrDefault返回该类型的默认值 如果结果集返回1记录:
SingleOrDefault返回该记录 FirstOrDefault返回该记录 如果结果集返回许多记录:
SingleOrDefault会抛出异常 FirstOrDefault返回第一条记录 结论:
如果您希望在结果集包含许多记录时抛出异常,请使用SingleOrDefault。
如果您总是想要1条记录,无论结果集包含什么,请使用FirstOrDefault