FirstOrDefault或SingleOrDefault将返回什么样的数据。
假设我的查询返回3条记录,如
empid ename salary
----- ----- ------
1 joy 1500
2 rob 4500
3 jen 6500
因此,如果我们使用FirstOrDefault或SingleOrDefault,那么我将得到什么样的结果集。请举例说明。感谢
答案 0 :(得分:35)
| 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
答案 1 :(得分:3)
SingleOrDefault将返回异常,因为它等待获取一条记录或没有记录,而FirstOrDefault将返回第一条记录(1 joy 1500)
你可以使用SingleOrDefault当你的where包含一个条件,在你的情况下会记录在案 - where empid == 1
显然你只想要一个ID为1的DB记录
答案 2 :(得分:3)
如果没有元素,FirstOrDefault将返回第一个元素和默认值(值类型的默认值,引用类型为null)。
如果只有一个元素,SingleOrDefault将返回该元素。如果不存在则为默认值,如果查询中包含多个元素,则抛出异常。
在您的情况下,FirstOrDefault将返回第一个元素。 而SingleOrDefault将抛出异常。