3 回答
TA贡献1854条经验 获得超8个赞
SingleOrDefaultFirstOrDefault
TA贡献1864条经验 获得超6个赞
SingleOrDefault返回类型的默认值(例如,int的默认值为0) FirstOrDefault返回类型的默认值。
SingleOrDefault返回记录 FirstOrDefault返回记录
SingleOrDefault抛出异常 FirstOrDefault返回第一条记录
SingleOrDefault.
FirstOrDefault
TA贡献1880条经验 获得超4个赞
语义差异 性能差异
语义差异:
FirstOrDefault返回第一项的潜在多个(或默认情况下,不存在)。 SingleOrDefault假设存在单个项并返回它(如果不存在则默认)。多项违反合同,引发异常。
性能差异
FirstOrDefault通常情况下,它的迭代速度更快,直到找到元素为止,并且只有在找不到元素时才需要迭代整个可枚举的元素。在许多情况下,很有可能找到一个项目。 SingleOrDefault需要检查是否只有一个元素,因此始终迭代整个枚举。准确地说,它迭代直到找到第二个元素并抛出一个异常。但在大多数情况下,没有第二个因素。
结语
使用 FirstOrDefault如果你不在乎有多少物品 或当您无法负担检查唯一性时(例如,在一个非常大的集合中)。当您检查将项添加到集合时的唯一性时,在搜索这些项时再次检查可能太昂贵了。 使用 SingleOrDefault如果您不需要太在意性能,并且希望确保单个项目的假设对读者来说是明确的,并在运行时进行检查。
First / FirstOrDefaultSingle / SingleOrDefault
- 3 回答
- 0 关注
- 994 浏览
添加回答
举报
