在Linq中,.FirstOrDefault和.SingleOrDefault之间的区别是什么

时间:2011-10-05 14:48:46

标签: linq entity-framework

我不知道FirstOrDefaultSingleOrDefault之间的区别。我何时应该使用第一个?何时应该使用第二个?

3 个答案:

答案 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