c# List集合中First、Last、Single方法使用


操作符


如果源序列是空的


源序列只包含一个元素


源序列包含多个元素


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

时间: 2024-10-09 19:00:52

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

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

http://blog.csdn.net/liu826710/article/details/9001254 在Map集合中 values():方法是获取集合中的所有的值----没有键,没有对应关系, KeySet():将Map中所有的键存入到set集合中.因为set具备迭代器.所有可以迭代方式取出所有的键,再根据get方法.获取每一个键对应的值. keySet():迭代后只能通过get()取key entrySet(): Set<Map.Entry<K,V>> entrySet(

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

下面的代码演示了遍历Collection集合的6种方法,注意Collection集合的遍历远不止于增强for循环,和迭代器两种. 代码如下: 1 package com.qls.traverse; 2 3 import java.util.ArrayList; 4 import java.util.Arrays; 5 import java.util.Collections; 6 import java.util.Enumeration; 7 import java.util.Iterator;

数组 --------集合 中的各种遍历方法!!!!!

(包名用了中文,大家不要在意这个) 1.数组     1.for 2.增强for package 杨彬_数组; public class ArrayDemo { /* * 数组遍历的方式: 1.for 2.增强for */ public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; test1(); test2(arr); } //增强for private static void test2(int[] arr

List集合中两种遍历方式

遍历List集合中的元素的方法有两种: 第一种:利用迭代器遍历 代码1: // 迭代器 Iterator it=list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } 或者代码2: for(Iterator it=list.iterator();it.hasNext();) { System.out.println(it.next()); }// 与while循环相比优点:对象it在循环结束后,变为垃圾,自动

使用Linq求和方法Sum计算集合中多个元素和时应该注意的性能问题

提出问题 本文使用下面的实例来说明问题,以下是实例的完整代码. //************************************************************ // // Sum应用示例代码 // // Author:三五月儿 // // Date:2014/09/10 // // http://blog.csdn.net/yl2isoft // //**********************************************************

C#集合中的Add与AddRange方法

C#.NET的集合主要位于System.Collections和System.Collections.Generic(泛型)这两个namespace中. 1.System.Collections 比如ArrayList,其Add(继承自接口IList)和AddRange方法可用于想集合中添加元素. 代码示例: (1)Add:添加单个元素 ArrayList myAL = new ArrayList(); myAL.Add( "The" ); myAL.Add( "quick&

Iterator的remove方法可保证从源集合中安全地删除对象(转)

import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorTest{ public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("Test1"); list.add("Test2&qu

[ jquery 过滤器 siblings(expr) ] 此方法用于在选择器的基础之上搜索取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,可以用可选的表达式进行筛选

此方法用于在选择器的基础之上搜索取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合,可以用可选的表达式进行筛选 实例: <html lang='zh-cn'> <head> <title>Insert you title</title> <meta http-equiv='description' content='this is my page'> <meta http-equiv='keywords' content='

Collection方法之二 向集合中添加自定义的元素

新建一个Person类 package andycpp; public class Person { private String name; private Integer age; //get,set方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public vo

[ jquery 文档处理 prependTo(content) ] 此方法用于把所有匹配的元素前置到另一个、指定的元素元素集合中

把所有匹配的元素前置到另一个.指定的元素元素集合中 实际上,使用这个方法是颠倒了常规的$(A).prepend(B)的操作,即不是把B前置到A中,而是把A前置到B中 在jQuery 1.3.2中,appendTo, prependTo, insertBefore, insertAfter, 和 replaceAll这个几个方法成为一个破坏性操作,要选择先前选中的元素,需要使用end()方法,参见 appendTo 方法的例二 实例: <html lang='zh-cn'> <head&g