Regarding FirstOrDefault or SingleOrDefault

本文关键字:SingleOrDefault or FirstOrDefault Regarding | 更新日期: 2023-09-27 18:01:40

FirstOrDefault或SingleOrDefault会返回什么样的数据

假设我的查询返回3条记录,如

empid  ename  salary
-----  -----  ------
1      joy    1500
2      rob    4500
3      jen    6500

所以如果我们使用FirstOrDefault或SingleOrDefault那么我将得到什么样的结果集。请举例说明。由于

Regarding FirstOrDefault or SingleOrDefault

                | 0 values    | 1 value     | > 1 value
FirstOrDefault  | Default     | First value | First value
SingleOrDefault | Default     | First value | Exception

将这个表扩展到整个集合:

                | 0 values    | 1 value     | > 1 value
First           | Exception   | First value | First value
FirstOrDefault  | Default     | First value | First value
Single          | Exception   | First value | Exception
SingleOrDefault | Default     | First value | Exception
Last            | Exception   | Last value  | Last value
LastOrDefault   | Default     | Last value  | Last value

这里是另一个版本,有一些具体的值,使其更清晰:

                | []          | [1]         | [1,2,3]
First           | Exception   | 1           | 1
FirstOrDefault  | 0           | 1           | 1
Single          | Exception   | 1           | Exception
SingleOrDefault | 0           | 1           | Exception
Last            | Exception   | 1           | 3
LastOrDefault   | 0           | 1           | 3

SingleOrDefault将返回异常,因为它等待获得一条记录或没有记录,而FirstOrDefault将返回第一条记录(1 joy 1500)您可以使用SingleOrDefault当您的where包含一个条件,将在您的情况下返回记录- where empid == 1显然,您只想要一个ID为1

的DB记录

FirstOrDefault将返回第一个元素和该元素的默认值(值类型为默认值,引用类型为null),如果没有元素存在。

SingleOrDefault将在只有一个元素时返回该元素。如果查询中没有元素,则为默认值;如果查询中有多个元素,则抛出异常。

在您的例子中,FirstOrDefault将返回第一个元素。SingleOrDefault会抛出一个异常