linq 在 null 上加入

标签 linq

Single 和 SingleOrDefault 有什么区别?

谢谢。

最佳答案

区别在于它们如何处理空序列。

  • Single如果没有找到元素,则抛出异常。
  • SingleOrDefault如果未找到元素,则返回值 default(T)。对于引用类型和可空值,默认值为 null。对于不可为 null 的值类型,它是 0 或类似值。

FirstFirstOrDefault方法也有关系。以下是表格中的所有四个:

method           no records  multiple records
---------------------------------------------
Single           exception   exception       
SingleOrDefault  default(T)  exception       
First            exception   first record    
FirstOrDefault   default(T)  first record    

所有这些方法还有一个带有谓词的重载。

另一个相关的方法是DefaultIfEmpty这允许您指定序列为空时的默认值,而不是仅使用类型的默认值。

关于linq 在 null 上加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4662421/

相关文章:

c# - 在 linq 查询中分配 IEnumerable 列表

c# - LinQ 如何将 1 之类的整数更改为字符串 001

linq - 在 Linq 中追加 OR 子查询

c# - 将谓词<T>转换为Func <T,bool>

c# - Entity Framework 中的 Datetime.UtcNow 查询的计算结果与 C# IL 中的 DateTime.UtcNow 不同

sql - 如何在 Entity Framework 方法语法中应用 SQL in 关键字?

c# - 使用 SOAP 编辑 : list<MyClass> 序列化包含列表<float[]> 的类

c# - EF Core 7 - 仅包含未删除的项目

c# - 如何按周对日期进行分组?

linq - 'select all' 的 RavenDB 最佳实践?