操作符

如果源序列是空的

源序列只包含一个元素

源序列包含多个元素

First

抛异常

返回该元素

返回第一个元素

FirstOrDefault

返回default(TSource)

返回该元素

返回第一个元素

Last

抛异常

返回该元素

返回最后一个元素

LastOrDefault

返回default(TSource)

返回该元素

返回最后一个元素

Single

抛异常

返回该元素

抛异常

SingleOrDefault

返回default(TSource)

返回该元素

抛异常

很明显,如果输入序列只有一个元素的话,这几个操作符的执行结果是非常一致的:) 类似的,如果输入的序列是空的的话,那么没有“OrDefault”的操作符会抛异常(InvalidOperationException),而带有“OrDefault”的操作符则会返回元素类型的默认值(引用类型的默认值为null,int的默认值为0,等等)。

如果(可能是被过滤过的)输入序列含有多个元素的话,那这些操作符的执行结果的差异是很大的,First和Last的结果是顾名思义的,而Single抛出异常。值得注意的是,SingleOrDefault也会抛出异常,因为它要做的事又不是像这样:如果输入序列只有一个元素的话,返回该元素,否则的话返回默认值。如果你需要能够处理多元素序列的操作符的话,用First或Last。如果你需要处理可能为空的序列的话,使用FirstOrDefault或LastOrDefault。请注意,如果使用带有“OrDefault”的操作符的话,那么一个空的序列和一个仅包含默认值的序列的执行结果会是完全一样的。

c# List集合中First、Last、Single方法使用的更多相关文章

  1. 从集合中查找最值得方法——max(),min(),nlargest(),nsmallest()

    从集合中查找最值得方法有很多,常用的方法有max(),min(),nlargest(),nsmallest()等. 一.max()和min() 1.1 入门用法 直接使用max(),min(),返回可 ...

  2. 【转载】C#中List集合中Last和LastOrDefault方法的差别

    在C#的List集合操作中,Last方法和LastOrDefault方法都会用来查找集合中最后一个符合条件的元素对象,但Last和LastOrDefault方法还是有差别的,建议使用LastOrDef ...

  3. Map集合中value()方法与keySet()、entrySet()区别

    http://blog.csdn.net/liu826710/article/details/9001254 在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, ...

  4. Map集合中value()方法与keySet()、entrySet()区别 《转》

    在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet(): 将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键 ...

  5. 遍历Collection集合中的6种方法:

    下面的代码演示了遍历Collection集合的6种方法,注意Collection集合的遍历远不止于增强for循环,和迭代器两种. 代码如下: package com.qls.traverse; imp ...

  6. 用Java集合中的Collections.sort方法对list排序的两种方法

    用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  7. Map集合中的一些具体方法的体现

    package com.java.b.map.www; import java.util.Collection;import java.util.HashMap;import java.util.It ...

  8. C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;

    ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口:       2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...

  9. 【转载】C#中使用Average方法对List集合中相应元素求平均值

    在C#的List集合操作中,有时候需要对List集合元素进行汇总求平均值,如数值类型的List集合元素,有时候对象类型的List集合也需要对集合中的元素的某个对象进行汇总求平均值,此时都可以使用到Av ...

  10. 使用Properties集合存储数据,遍历取出Properties集合中的数据和Properties集合中的方法store和load

    package com.yang.Test.PropertiesStudy; import java.io.FileWriter; import java.io.IOException; import ...

随机推荐

  1. 分享 C++图像处理的代码简易示例

    采用Decoder:stb_image https://github.com/nothings/stb/blob/master/stb_image.h 采用Encoder:tiny_jpeghttps ...

  2. 轻松学JVM(一)——基本原理

    前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则jvm则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解jvm必要的知识点. 运行流程 我们都 ...

  3. 1.配置vsftp服务器

    1.安装 vsftp yum -y install ftp vsftpd 2.查看配置文件所在路径 rpm -qc vsftpd 3.备份vsftpd文件 cp vsftpd.conf vsftpd. ...

  4. txt文件怎么设置默认打开是用这个EditPlus软件打开

    1.如果是正常安装的Editplus,只需要右击“txt文件”,在“打开方式”中选择“打开程序”,再点击“浏览”,找到“Editplus”打开,再将“始终使用选择的程序打开这种文件”前面的“口”选中, ...

  5. 如何两周达到150行Java程序的能力--part 1

    面向对象程序先导课是体系化面向对象课程的重要组成部分,其目标是帮助那些有一定C语言基础,但对面向对象概念陌生,基本没碰过Java编程的同学.该课程设计为暑期选修课,因为没有其他课程,我们设计为现场训练 ...

  6. SSH服务(一)

    一.初始SSH SSH是标准的网络协议,可用于大多数UNIX操作系统,能够实现字符界面的远程登录管理,它默认使用22号端口,采用密文的形式在网络中传输数据,相对于通过明文传输的Telnet,具有更高的 ...

  7. Ubuntu下Apache中部署Django

    环境:ubuntu12.04 server | apache2 | django1.6 | python2.7 | mod_wsgi 1. 安装apache2: sudo apt-get instal ...

  8. Web.Config文件详解

    一).Web.Config是以XML文件规范存储,配置文件分为以下格式    1.配置节处理程序声明      特点: 位于配置文件的顶部,包含在<configSections>标志中.  ...

  9. 用UE4来做Zego即构的房间列表

    Zego即构是一家做直播的服务商,Zego即构自己的房间列表,本文只是测试功能用,相应代码并没完全测试,请选择性参考. 我们在UE4中来实现一下,我感觉这个过程有点意思,UE4中C++与蓝图和UI的互 ...

  10. vue.js语法

    Vue.js是当下很火的一个JavaScript MVVM(Model-View-ViewModel)库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更 ...