c# - 如果未找到项目,为什么 LINQ 的 First 方法不简单地返回 null?

标签 c# .net linq

我不太明白First的目的与 FirstOrDefault .我的意思是,我了解功能差异。但我真的不明白为什么微软认为应该有两种不同的方法?有人知道吗?

最佳答案

First 如果序列为空则抛出异常。这是唯一的区别。

First 有一个序列不为空的内置断言。这就是它的目的。有时您知道序列不能为空。例如,如果您在数据库 A 中查找一个客户并且它存在,您就知道它也将存在于数据库 B 中。如果它在 B 中不存在,这将是一个错误。

如果出现错误,您希望发出一声巨响来提醒您。这就是为什么断言在生产代码中经常有用的原因。您当然想要继续执行错误数据。这使得查找错误的来源变得更加困难,甚至可能完全隐藏错误。

First 的全部要点在于,拥有此内置断言通常非常有用。

SingleSingleOrDefault 也是如此。这些断言序列永远不会有一个以上的元素。事实证明,这通常是您在实际代码中想要的。

FirstOrDefault 还允许您处理序列为空的情况,而 First 则不然(捕获异常将是对异常的滥用)。

此外,First 记录了您对序列长度的了解,以便阅读代码的任何人都清楚这一事实。

关于c# - 如果未找到项目,为什么 LINQ 的 First 方法不简单地返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487605/

相关文章:

c# - 嵌套的json c#对象反序列化

.net - 如何在实际绘画之前在光标处显示画笔?

c# - 使用 IIS 的通用处理程序解析错误

c# - LINQ 查询中的左外连接

c# - 使用 LINQ for Dropdown 返回串联字符串

c# - 带有 ExecuteReaderAsync CommandBehavior.SequentialAccess 的 ASP.NET webapi HttpResponseMessage

c# - 如何检查状态并决定执行代码的哪一部分

c# - 数组从中间开始迭代

c# - 为什么我收到错误 "Input string was not in a correct format"

linq - 乌鸦数据库 4 : Check if a string of an array of strings exists in different array of strings