C#学习经典方法之(七)---List的FirstOrDefault
2016-12-14 10:55
197 查看
集合中方法:
·First - 返回集合中的第一个元素;不延迟
·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟
·Last - 返回集合中的最后一个元素;不延迟
·LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值)
·ElementAt - 返回集合中指定索引的元素;不延迟
·ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟
·Contains - 判断集合中是否包含有某一元素;不延迟
·Any - 判断集合中是否有元素满足某一条件;不延迟
·All - 判断集合中是否所有元素都满足某一条件;不延迟
·Count - 返回集合中的元素个数,返回int;不延迟
·LongCount - 返回集合中的元素个数,返回long;不延迟
·Sum - 集合应为数字类型集合,求其和;不延迟
·Min - 返回集合的最小值;不延迟
·Max - 返回集合的最大值;不延迟
·Average - 集合应为数字类型集合,求其平均值;不延迟
·Aggregate - 根据输入的表达式获取一个聚合值;不延迟
·Cast - 将集合转换为强类型集合;延迟
·DefaultIfEmpty - 查询结果为空则返回默认值;延迟
·SequenceEqual - 判断两个集合是否相同;不延迟
·OfType - 过滤集合中的指定类型;延迟
·ToArray - 将集合转换为数组;不延迟
·ToList - 将集合转换为List<T>集合;不延迟
·ToDictionary - 将集合转换为<K, V>集合;不延迟
********************************
List中函数用法:First,FirstOrDefault,Single,SingleOrDefault的区别
操作符
很明显,如果输入序列只有一个元素的话,这几个操作符的执行结果是非常一致的:) 类似的,如果输入的序列是空的的话,那么没有“OrDefault”的操作符会抛异常(InvalidOperationException),而带有“OrDefault”的操作符则会返回元素类型的默认值(引用类型的默认值为null,int的默认值为0,等等)。
如果(可能是被过滤过的)输入序列含有多个元素的话,那这些操作符的执行结果的差异是很大的,First和Last的结果是顾名思义的,而Single抛出异常。值得注意的是,SingleOrDefault也会抛出异常,因为它要做的事又不是像这样:如果输入序列只有一个元素的话,返回该元素,否则的话返回默认值。如果你需要能够处理多元素序列的操作符的话,用First或Last。如果你需要处理可能为空的序列的话,使用FirstOrDefault或LastOrDefault。请注意,如果使用带有“OrDefault”的操作符的话,那么一个空的序列和一个仅包含默认值的序列的执行结果会是完全一样的。
备注:转自http://blog.sina.com.cn/s/blog_710faf420102waov.html
·First - 返回集合中的第一个元素;不延迟
·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟
·Last - 返回集合中的最后一个元素;不延迟
·LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值)
·ElementAt - 返回集合中指定索引的元素;不延迟
·ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟
·Contains - 判断集合中是否包含有某一元素;不延迟
·Any - 判断集合中是否有元素满足某一条件;不延迟
·All - 判断集合中是否所有元素都满足某一条件;不延迟
·Count - 返回集合中的元素个数,返回int;不延迟
·LongCount - 返回集合中的元素个数,返回long;不延迟
·Sum - 集合应为数字类型集合,求其和;不延迟
·Min - 返回集合的最小值;不延迟
·Max - 返回集合的最大值;不延迟
·Average - 集合应为数字类型集合,求其平均值;不延迟
·Aggregate - 根据输入的表达式获取一个聚合值;不延迟
·Cast - 将集合转换为强类型集合;延迟
·DefaultIfEmpty - 查询结果为空则返回默认值;延迟
·SequenceEqual - 判断两个集合是否相同;不延迟
·OfType - 过滤集合中的指定类型;延迟
·ToArray - 将集合转换为数组;不延迟
·ToList - 将集合转换为List<T>集合;不延迟
·ToDictionary - 将集合转换为<K, V>集合;不延迟
********************************
List中函数用法:First,FirstOrDefault,Single,SingleOrDefault的区别
操作符
如果源序列是空的 | 源序列只包含一个元素 | 源序列包含多个元素 | |
First | 抛异常 | 返回该元素 | 返回第一个元素 |
FirstOrDefault | 返回default(TSource) | 返回该元素 | 返回第一个元素 |
Last | 抛异常 | 返回该元素 | 返回最后一个元素 |
LastOrDefault | 返回default(TSource) | 返回该元素 | 返回最后一个元素 |
Single | 抛异常 | 返回该元素 | 抛异常 |
SingleOrDefault | 返回default(TSource) | 返回该元素 | 抛异常 |
如果(可能是被过滤过的)输入序列含有多个元素的话,那这些操作符的执行结果的差异是很大的,First和Last的结果是顾名思义的,而Single抛出异常。值得注意的是,SingleOrDefault也会抛出异常,因为它要做的事又不是像这样:如果输入序列只有一个元素的话,返回该元素,否则的话返回默认值。如果你需要能够处理多元素序列的操作符的话,用First或Last。如果你需要处理可能为空的序列的话,使用FirstOrDefault或LastOrDefault。请注意,如果使用带有“OrDefault”的操作符的话,那么一个空的序列和一个仅包含默认值的序列的执行结果会是完全一样的。
备注:转自http://blog.sina.com.cn/s/blog_710faf420102waov.html
相关文章推荐
- C#学习经典方法之(五)--LINQ to SQL
- C#学习经典方法之(三)---String.Join方法
- C#学习经典方法之(一)--装箱和取消装箱
- C#学习经典方法之(五)--LINQ中的DataContext类
- C#学习经典方法之(八)---XmlNode.OuterXml属性
- vs.net快速开发windows服务(c#)方法学习
- C# 函数方法大全+学习笔记
- C#中常用的经典文件操作方法
- Asp.Net--DropDownList与DataTable数据绑定的方法(C#)[学习笔记]
- C#学习:一个创建随机验证码的方法
- c#经典入门学习笔记-定义集合
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- [Source Code]学习了一种比较经典的遍历XML文件的方法
- c#经典入门学习笔记-封箱和拆箱
- c#经典入门--学习笔记
- c#经典入门学习笔记-结构类型与对象的比较
- C# 静态成员和方法的学习小结
- C#学习之静态成员和非静态成员,构造函数,方法,方法参数,操作符重载,事件
- 学习手记,网文摘录--C#验证输入的是否数字的方法
- C# 静态成员和方法的学习小结