关于Linq中First、FirstOrDefault;Single、SingleOrDefault等方法的说明

关于Linq中First、FirstOrDefault;Single、SingleOrDefault等方法的说明

这里以First、FirstOrDefault进行说明,其他类似。 
1、First:取序列中满足条件的第一个元素,如果没有元素满足条件,则抛出异常

2、FirstOrDefault:取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为null的对象,默认值为null,对于不能为null的对象,如int,默认值为0)

3、Single,返回序列中的唯一一条记录,如果没有或返回多条,则引发异常。

4、SingleOrDefault,返回序列中的唯一一条记录,如果序列中不包含任何记录,则返回默认值,如果返回多条,则引发异常。

注:以上默认值为NULL。

First、FirstOrDefault的区别在于:当没有元素满足条件时,一个抛出异常,一个返回默认值。
因此,在使用时,一定要注意这个区别: 
1、当确信序列中一定有满足条件的元素时,使用First方法,取到元素后,无需判断是否为null
2、当序列中可能找不到满足条件的元素时,使用FirstOrDefault方法,然后,一定要对返回值是否为null,进行不同的处理

原文地址:https://www.cnblogs.com/slwangzi/p/8508305.html

时间: 2024-08-18 12:22:43

关于Linq中First、FirstOrDefault;Single、SingleOrDefault等方法的说明的相关文章

[转] .NET 中关于 First,FirstOrDefault,Single,SingleOrDefault 几个方法的区别

.NET 的 System.Linq.Enumerable 类为我们提供了许多 Linq 方法,今天给大家分享一下关于 First,FirstOrDefault,Single,SingleOrDefault 几个方法的区别,实例及使用场景,首先是关于这几个方法的定义:First: 返回序列中的第一个元素.FirstOrDefault: 返回序列中的第一个元素:如果序列中不包含任何元素,则返回默认值.Single: 返回序列的唯一元素:如果该序列并非恰好包含一个元素,则会引发异常.SingleOr

linq中first() firstordefault() last() lastOrDefault() single() singleOrDeafult

一.firstordefault() 和 first() class Program { static void Main(string[] args) { List<Emp> list = new List<Emp> { new Emp{ Id="001", Name="张三", Age="10", Address="河北石家庄"}, new Emp{ Id="002", Name

First,FirstOrDefault,Single,SingleOrDefault的区别

操作符 如果源序列是空的 源序列只包含一个元素 源序列包含多个元素 First 抛异常 返回该元素 返回第一个元素 FirstOrDefault 返回default(TSource) 返回该元素 返回第一个元素 Last 抛异常 返回该元素 返回最后一个元素 LastOrDefault 返回default(TSource) 返回该元素 返回最后一个元素 Single 抛异常 返回该元素 抛异常 SingleOrDefault 返回default(TSource) 返回该元素 抛异常 很明显,如果

Linq中Select查询参数提取公共方法

class Program { static void Main(string[] args) { var listTest1 = new List<Test1> { new Test1{Key="1",Name="1"}, new Test1{Key="2",Name="2"}, new Test1{Key="3",Name="3"} }; var listTest2 =

Sliverlight linq中的数组筛选数据库中的数据

首先 什么是linq呢 ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. 它是.NET框架的扩展,它允许我们以数据库查询的方式查询数据集合. 借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据. 接下来讲讲我工作中用到的 linq中的数组筛选数据库中的数据 public List GetList1(string cardPhone,string

linq中AsEnumerable和AsQueryable的区别

本文导读:用Linq来操作集合的时候会用到AsQueryable()和AsEnumerable(),何时该用AsQueryable()和何时该用AsEnumerable(),或许存在些疑惑.AsQueryable是在数据库中查询再返回数据,AsEnumerable是从数据库读取全部数据再在程序中查询. 在使用LINQ 进行数据集操作时,LINQ 不能直接从数据集对象中查询,因为数据集对象不支持LINQ 查询,所以需要使用AsEnumerable 方法返回一个泛型的对象以支持LINQ 的查询操作.

Linq中使用Left Join

use Test Create table Student( ID int identity(1,1) primary key, [Name] nvarchar(50) not null ) Create Table Book( ID int identity(1,1) primary key, [Name] nvarchar(50)not null, StudentID int not null ) insert into Student values('张三') insert into St

LINQ中的一些查询语句格式

LINQ的基本格式如下所示:var <变量> = from <项目> in <数据源> where <表达式> orderby <表达式> LINQ 基本子句from查询子句——基础后面跟随着项目名称和数据源示例代码如下:var str = from lq in str select lq; 其中select语句指定了返回到集合变量中的元素是来自哪个数据源的 from查询子句——嵌套查询可以在from子句中嵌套另一个from子句即可,示例代码如下

Linq中GroupBy方法的使用总结(转)

Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: public class StudentScore { public int ID { set; get; } public string Name { set; get; } public string Course { set; get; } public int Score { set; get; } public str