在C#的List集合中查找一个符合条件的元素,一般我们会用First方法或者FirstOrDefault方法来返回第一个符合条件的对象,First方法和FirstOrDefault的调用都是使用Lambda表达式方式来书写查询语句条件。其实建议统一使用FirstOrDefault方法来查询List集合中符合条件的第一个记录,因为First方法在无法查到任何符合条件信息的对象的情况下,会直接抛出System.InvalidOperationException异常,提示序列不包含任何匹配元素。而使用FirstOrDefault方法则不会抛出异常,如果在List集合中未查找到符合条件的元素对象,则返回默认值,如果是对象类型的数据则返回Null,其余基础类型返回对应的默认值。

例如,我们有个List集合List<TestModel>对象list,TestModel类的定义如下:

public class TestModel
    {
         public int Index { set; get; }

public string Name { set; get; }
    }

list对象的具体定义以及内容元素如下,包含2个实体对象。

List<TestModel> list = new List<ConsoleApplication1.TestModel>();
   list.Add(new ConsoleApplication1.TestModel() { Index=1,Name="Text1" });
   list.Add(new ConsoleApplication1.TestModel() { Index = 2, Name = "Text2" });

使用First方法来查找Index=12的记录的语句为:var model = list.First(t => t.Index == 12)。此代码块在运行的时候直接抛出System.InvalidOperationException异常,提示序列不包含任何匹配元素,然后程序终止执行。而如果使用FirstOrDefault方法来书写的话,相关语句则为var model = list.FirstOrDefault(t => t.Index == 12)。返回的model变量的值为null,只需要在后续代码中判断model是否为null即可,程序在运行时候不会直接抛出异常。

得出结论:First方法和FirstOrDefault方法尽量使用FirstOrDefault方法来实现查找功能,FirstOrDefault方法不会直接抛出程序运行时异常而终止程序的执行。

备注:原文转载自博主个人站IT技术小趣屋,原文链接C#中List集合First和FirstOrDefault方法有何不同_IT技术小趣屋

博主个人技术交流群:960640092,博主微信公众号如下:

【转载】C#中List集合First和FirstOrDefault方法有何不同的更多相关文章

  1. 【转载】C#中List集合SingleOrDefault和FirstOrDefault方法有何不同

    在C#的List集合类的操作过程中,有时候我们会使用到List集合的SingleOrDefault方法和FirstOrDefault等方法,这2个方法都是System.Linq.Enumerable类 ...

  2. [转载]C#中字典集合的两种遍历

    Dictionary<string, string> dictionary = new Dictionary<string,string>(); foreach (string ...

  3. [转载]C#中播放背景音乐几种的方法

    最经在写winform程序,其中有用到播放背景音乐 特此收集了一些网上的教程: 1.调用非托管的dll using System.Runtime.InteropServices; //DllImpor ...

  4. [转载]Winform中Control的Invoke与BeginInvoke方法

    转自http://www.cppblog.com/baby-fly/archive/2010/04/01/111245.html 一.为什么 Control类提供了 Invoke和 BeginInvo ...

  5. 【转载】C#使用FirstOrDefault方法快速查找List集合中符合条件的第一个实体

    在C#的List集合的操作中,有时候我们需要根据相关条件快速从List集合中获取到第一个符合条件的实体对象,例如有个全校班级的List集合,我们需要根据班级代码快速从List集合中查找出班级信息.可以 ...

  6. 【转载】C#中List集合使用LastOrDefault方法查找出最后一个符合条件的元素

    在C#的List集合中,FirstOrDefault方法一般用来查找List集合中第一个符合条件的对象,如果未查到则返回相应默认值.其实如果要查找最后一个符合条件的List集合元素对象,可以使用Las ...

  7. 【转载】C#中List集合使用Remove方法移除指定的对象

    在C#的List集合操作中,有时候需要将特定的对象或者元素移除出List集合序列中,此时可使用到List集合的Remove方法,Remove方法的方法签名为bool Remove(T item),it ...

  8. 【转载】 C#中List集合使用First方法查找符合条件的第一个元素

    在C#的List集合相关操作中,很多时候需要从List集合中查找出符合条件的第一个元素对象,如果确认在List集合中一定存在符合条件的元素,则可以使用First方法来查找,First方法调用格式为Fi ...

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

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

随机推荐

  1. win7下查看进程端口

    一. 查看所有进程占用的端口 在开始-运行-cmd,输入:netstat –ano 可以查看所有进程 二.查看占用指定端口的程序 当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道 ...

  2. 运维笔记--linux环境提示python: command not found

    场景描述: 新部署的容器环境,终端执行python命令,提示没有该命令. 从报错异常可以看出,可能是python环境未安装. 分析思路: 检查python路径: 方式一:type -a python ...

  3. linux系统(centos6)的目录结构

    /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件. /dev :dev是Device( ...

  4. dotfuscator 在混淆.Net Framework 4.0以上版本的时候报错的解决方法

    dotfuscator 在混淆.Net Framework 4.0以上版本的时候报错的解决方法 在混淆的时候报错了,错误描述大致如下: Could not find a compatible vers ...

  5. [LeetCode] 295. Find Median from Data Stream 找出数据流的中位数

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

  6. InfluxDB入门

    InfluxDB是一个用于存储和分析时间序列数据的开源数据库 时序数据是基于时间的一系列的数据 时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入.持久化.多纬度的聚合查询等基本功能 ...

  7. VS 2015main函数带参数的调试

    最近学习pcl,学习C++,今天让main的参数接收数据,想起没用过这样的,不知道怎么在vs里面调试 因此找了下方法,并记录下来 代码 #include<iostream> int mai ...

  8. java8新特性:对map集合排序

    一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map,map是键值对的集合接口,它的实现类主要包括:HashMap, TreeMap, Hashtable以及LinkedHashMap等 ...

  9. Python Tkinter 窗口创建与布局

    做界面,首先需要创建一个窗口,Python Tkinter创建窗口很简单:(注意,Tkinter的包名因Python的版本不同存在差异,有两种:Tkinter和tkinter,读者若发现程序不能运行, ...

  10. 创建 django 项目命令

    创建Django项目 django-admin startproject HelloWorld Django创建app cd HelloWorld python manage.py startapp ...