关于linq:ORM中First,FirstOrDefault和singleOrDefault关键字之间的区别

Difference between First, FirstOrDefault and singleOrDefault keywords in ORM

EI需要从按日期降序排列的第一行中选择特定的单个数据元素。请指定以下关键字之间的差异。

  • 弗斯特
  • 首次违约
  • 单一违约

还需要放置orderby的优先级/顺序和使用规则,在Linq ORM查询中进行选择。如果答案清晰且具有描述性,将非常有帮助。

提前谢谢


一个快速的google会给你以下的问题来解决你的问题:

  • 何时使用.first以及何时使用.firstordefault与linq?

  • Linq:何时使用带有筛选条件的singleOrDefault与firstOrDefault()。

在每个方法中,您可能还会发现以下文章非常有用:

  • http://www.technicaloverload.com/linq-single-vs-singleordefault-vs-first-vs-first-ordefault/

如答案中所述,这些名字的确会泄露给(熟悉的人),但这里有一个简短的概述:

弗斯特

将返回集合中的第一个条目(返回一个或多个结果),如果没有返回任何记录,将引发异常。

首次违约

将返回集合中的第一个条目(返回一个或多个结果),如果未返回任何记录,将返回相应的默认对象

单一违约

这个函数与前面提到的函数并不完全相同,只有返回一条记录时才会返回结果,否则将返回相应的默认对象。

我倾向于使用First,如果我知道我的结果总是返回"something",当我只需要第一个元素,但知道有时查询可能不会返回任何内容时,我使用FirstOrDefault。我还没有亲自使用SingleOrDefault,但是它应该只在您的查询只返回一行时使用,如果存在多个结果,那么返回的结果应该被忽略。