关于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。