C# 中的Single,SingleOrDefault,First,FirstOrDefault的区别

Single(条件):确定只符合条件的结果只有一个值;否则报错,如果有多个值则报Sequence contains more than one matching element  如果没有符合的则报Sequence contains no matching element。

SingleOrDefault(条件):在确定的条件下,只有一个或者0个值;如果一个以上的值符合条件 则报错。

First(条件):在确定条件下,至少有一个值;否则报Sequence contains no matching element错误。

FirstOrDefault(条件):在确定条件下,可以有0个包括0个  以上的值。

int[] nums = { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 };

            Console.WriteLine("single:" + nums.Single(x => x>4 && x<9));
            Console.WriteLine("SingleOrDefault:" + nums.SingleOrDefault(x => x > 4 && x < 7));
            Console.WriteLine("First:" + nums.First(x => x > 4 && x < 512));
            Console.WriteLine("FirstOrDefault:" + nums.FirstOrDefault(x => x > 513 && x < 512));

  

时间: 2024-11-10 14:29:18

C# 中的Single,SingleOrDefault,First,FirstOrDefault的区别的相关文章

Linq中SingleOrDefault、FirstOrDefault的用法

1.SingleOrDefault和FirstOrDefault的区别 SingleOrDefault 只取一个 如果没有数据等于 null, 如果>1  异常 FirstOrDefault  只取一个  如果没有数据等于 null, 如果>1 取第一个 2.First和FirstOrDefault的区别 First:取序列中满足条件的第一个元素,如果没有元素满足条件,则抛出异常   FirstOrDefault:取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为nu

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

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

微软BI 之SSIS 系列 - Execute SQL Task 中的 Single Row 与 Full Result Set 的处理技巧

开篇介绍 Execute SQL Task 这个控件在微软BI ETL 项目中使用的频率还是非常高的,也是大部分入门 SSIS 初学者最早接触到的几个控制流控件. 我们通常使用 Execute SQL Task 的场景包含但不止于以下几类: 在从源端加载数据到 Staging 表之前使用 Execute SQL Task 执行一些 Truncate 操作. 执行一些 Log 的插入,更新操作. ETL 过程中的 Merge 语句操作. XML 的输出处理. 关于如何使用 Execute SQL

java中System.getenv和System.getProperties的区别

System.getenv获取的是系统的环境变量(就是用户在操作系统中设置的环境变量),windows和linux下环境变量的设置就不说了哦. System.getProperties获取的是系统的相关属性.在java api文档中已经列出了如下属性 如果我们要在java程序启动就能获取自定义的系统属性我们可以使用 java –Dname=zhuhui 这样我们就在系统属性中设置了名称为myname值为zhuhui的系统属性,那么就可以通过System.getProperty("name&quo

oracle中delete、truncate、drop的区别

oracle中delete.truncate.drop的区别 标签: deleteoracletable存储 2012-05-23 15:12 7674人阅读 评论(0) 收藏 举报  分类: oracle(2)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(c

Java中final、finally、finalize的区别(转)

Java中final.finally.finalize的区别与用法,困扰了不少学习者,下面我们就这个问题进行一些探讨,希望对大家的学习有所帮助. 方法/步骤 1 简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构的一部分,表示总是执行. finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等. END 方法/步骤2 1 中等区别: 虽然这三

struts2 中chain、redirect、redirect-action的区别

struts2 中chain.redirect.redirectaction的区别 文章摘要: 一.Chain Result:这个result调用另外的一个action,连接自己的拦截器栈和result. ?actionName (默认) - 被调用的action的名字?namespace - 被调用的action的名称空间. 如果名称空间为空,这默认为当前名称空间?method - 用于指定目标action的另一个方法被调用. 如果空,默认为excute方法Redirect Action Re

python中_、__和__xx__的区别

python中_.__和__xx__的区别 本文为译文,版权属于原作者,在此翻译为中文分享给大家. 英文原文地址:Difference between _, __ and __xx__ in Python 在学习Python时,很多人都弄不清楚各种下划线的意思,而且在这之前已经给其他人解释过很多遍了,是时候把它记录下来. "_"单下划线 Python中不存在真正的私有方法.为了实现类似于c++中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该去调用,它并不

C#中override和new修饰符的区别

(new)“隐藏”,(override)“覆盖”(重写).不过要弄清楚这两个有什么区别确实也很难,因为子类在使用父类方法时根本看不出区别,子类不管父类是new了还是override了,用的都是父类方法.区别就在于,一个子类对象中,用父类类型指针去访问子类成员时有区别. 如果是new的,那么父类的这个函数地址仍然保留着,同时又提供了一个新的子类的该函数入口地址.也就是说子类对象中同时保存了两个入口地址,父类的该函数地址被“隐藏”,但是它还可以用父类的类型指针访问得到:用子类类型指针访问该函数,则进

Java中字符串比较时==和equals的区别

==是比较两个字符串引用的地址是否相同,即是否指向同一个对象,而equals方法则比较字符串的内容是否相同. 例如String a = "abc"; String b = "abc"; a == b返回true,a.equals(b)同样返回true,这是为什么呢? 原来程序在运行时有一个字符串池,创建字符串时会先查找池中是否有相应的字符串,如果已经存在的话只需把引用指向它即可,如果没有则新建一个. 上例中创建a时,会在字符串池中首先创建一个"abc&qu