操作符

如果源序列是空的

源序列只包含一个元素

源序列包含多个元素

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”的操作符的话,那么一个空的序列和一个仅包含默认值的序列的执行结果会是完全一样的。

转载自 http://www.cnblogs.com/firstcsharp/archive/2013/02/27/2935833.html

最新文章

  1. QQ空间动态爬虫
  2. HT图形组件设计之道(四)
  3. jquery设置滚动条距离页面顶部的高度
  4. FCFS
  5. Java去除字符串中的空格
  6. js获取屏幕和窗口的信息
  7. C# 程序只能执行一次
  8. 生成 HTMLTestRunner 测试报告学习总结
  9. EntityFramework6.X 之DbContex
  10. ionic开发遇到的坑及总结
  11. BZOJ_2622_[2012国家集训队测试]深入虎穴_最短路
  12. SpringMVC的相关知识
  13. idea 编译 内存不足
  14. RestTemplate之GET和POST调用和异步回调
  15. irc
  16. 线程简述(Thread)
  17. Apache Hadoop下一代MapReduce框架(YARN)简介 (Apache Hadoop NextGen MapReduce (YARN))
  18. Css格式化/压缩(代码)
  19. 从xtraback 备份文件中 单独恢复一张 innodb 表
  20. 【Android Studio使用教程1】Android Studio导入项目的几种方法

热门文章

  1. smarty类与对象的赋值与使用
  2. 为啥final类型的map或者arraylist可以修改数据 而final类型的String变量不可以修改数据呢
  3. 说说JVM中的操作码
  4. SciTE编写lua的快捷键整理
  5. mysql 数据库查询
  6. [Selenium With C#基础教程] Lesson-06 单选按钮
  7. 深入理解linux的权限设置和SUID,SGID以及粘滞位
  8. 多线程的那点儿事(之windows锁)
  9. Maven整理笔记のMaven仓库
  10. Linux Guard Service - 守护进程分裂