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那么我将得到什么样的结果集。请举例说明。由于
| 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
FirstOrDefault将返回第一个元素和该元素的默认值(值类型为默认值,引用类型为null),如果没有元素存在。
SingleOrDefault将在只有一个元素时返回该元素。如果查询中没有元素,则为默认值;如果查询中有多个元素,则抛出异常。
在您的例子中,FirstOrDefault将返回第一个元素。SingleOrDefault会抛出一个异常