c# - 何时使用 .First 以及何时将 .FirstOrDefault 与 LINQ 一起使用?

标签 c# .net linq

我四处搜索,并没有真正找到关于何时使用 .First 以及何时使用 .FirstOrDefault 与 LINQ。

  • 您什么时候想使用.First?仅当您希望在没有返回结果的情况下捕获异常时?

    var result = List.Where(x => x == "foo").First();
    
  • 您什么时候想使用.FirstOrDefault?如果没有结果,您总是想要默认类型?

    var result = List.Where(x => x == "foo").FirstOrDefault();
    
  • 那么 Take 呢?

    var result = List.Where(x => x == "foo").Take(1);
    

最佳答案

当我知道或期望序列至少有一个元素时,我会使用 First()。换句话说,当序列为空时出现异常。

当您知道需要检查是否存在某个元素时,请使用FirstOrDefault()。换句话说,当序列为空是合法的。您不应依赖异常处理来进行检查。 (这是不好的做法,可能会影响性能)。

最后,First()Take(1) 的区别是 First() 返回元素本身,而 Take(1) 返回仅包含一个元素的元素序列。

关于c# - 何时使用 .First 以及何时将 .FirstOrDefault 与 LINQ 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1024559/

相关文章:

c# - 如何使用 LINQ 编写子查询

c# - PythonNET DateTime C# .NET List 如何填充它?

.net - 根据反射,.NET 对象实际上可以没有构造函数吗?

c# - 如何让 RichTextBox 只显示文本?

c# - 依赖于访问修改后的闭包的实现是否不可取?

c# - 在 C# 中检测可空类型

c# - ComboBox 不更新所选项目的 DataBindings 已更改 (WinForms)

c# - INotifyPropertyChanged 绑定(bind)未按预期更新

linq - 参数 LINQ 查询

c# - 解决扩展方法/LINQ 歧义