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