关于Linq中First、FirstOrDefault;Single、SingleOrDefault等方法的说明
关于Linq中First、FirstOrDefault;Single、SingleOrDefault等方法的说明
这里以First、FirstOrDefault进行说明,其他类似。
1、First:取序列中满足条件的第一个元素,如果没有元素满足条件,则抛出异常
2、FirstOrDefault:取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为null的对象,默认值为null,对于不能为null的对象,如int,默认值为0)
3、Single,返回序列中的唯一一条记录,如果没有或返回多条,则引发异常。
4、SingleOrDefault,返回序列中的唯一一条记录,如果序列中不包含任何记录,则返回默认值,如果返回多条,则引发异常。
注:以上默认值为NULL。
First、FirstOrDefault的区别在于:当没有元素满足条件时,一个抛出异常,一个返回默认值。
因此,在使用时,一定要注意这个区别:
1、当确信序列中一定有满足条件的元素时,使用First方法,取到元素后,无需判断是否为null
2、当序列中可能找不到满足条件的元素时,使用FirstOrDefault方法,然后,一定要对返回值是否为null,进行不同的处理
关于Linq中First、FirstOrDefault;Single、SingleOrDefault等方法的说明的更多相关文章
- List中函数用法 First,FirstOrDefault,Single,SingleOrDefault的区别
操作符 如果源序列是空的 源序列只包含一个元素 源序列包含多个元素 First 抛异常 返回该元素 返回第一个元素 FirstOrDefault 返回default(TSource) 返回该元素 返回 ...
- linq中first() firstordefault() last() lastOrDefault() single() singleOrDeafult
一.firstordefault() 和 first() class Program { static void Main(string[] args) { List<Emp> list ...
- First,FirstOrDefault,Single,SingleOrDefault的区别
操作符 如果源序列是空的 源序列只包含一个元素 源序列包含多个元素 First 抛异常 返回该元素 返回第一个元素 FirstOrDefault 返回default(TSource) 返回该元素 返回 ...
- EntityFramework First,FirstOrDefault,Single,SingleOrDefault的区别
操作符 如果源序列是空的 源序列只包含一个元素 源序列包含多个元素 First 抛异常 返回该元素 返回第一个元素 FirstOrDefault 返回default(TSource) 返回该元素 返回 ...
- Linq中Select查询参数提取公共方法
class Program { static void Main(string[] args) { var listTest1 = new List<Test1> { "}, & ...
- 转载有个小孩跟我说LINQ(重点讲述Linq中GroupBy的原理及用法)
转载原出处: http://www.cnblogs.com/AaronYang/archive/2013/04/02/2994635.html 小孩LINQ系列导航:(一)(二)(三)(四)(五)(六 ...
- Linq中关键字的作用及用法
Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...
- linq中AsEnumerable和AsQueryable的区别
本文导读:用Linq来操作集合的时候会用到AsQueryable()和AsEnumerable(),何时该用AsQueryable()和何时该用AsEnumerable(),或许存在些疑惑.AsQue ...
- Linq中使用Left Join
use Test Create table Student( ID ,) primary key, ) not null ) Create Table Book( ID ,) primary key, ...
随机推荐
- tomcat原理解析(二):整体架构
一 整体结构 前面tomcat实现原理(一)里面描述了整个tomcat接受一个http请求的简单处理,这里面我们讲下整个tomcat的架构,以便对整体结构有宏观的了解.tomat里面由很多个容器结合在 ...
- unity多线程
多线程概念 多线程,是指实现多个线程并发执行的技术,合理利用多线程可以提升程序的性能,在unity中,一般是避免使用多线程的,unity对多线程的支持并不友好. 协程概念 协程,是指在主线程运行时开启 ...
- [转]Charts (Report Builder and SSRS)
本文转自:https://docs.microsoft.com/en-us/sql/reporting-services/report-design/charts-report-builder-and ...
- [转]wxParse-微信小程序富文本解析组件
本文转自:https://github.com/icindy/wxParse 基本使用方法 Copy文件夹wxParse - wxParse/ -wxParse.js(必须存在) -html2json ...
- 第7章 Scrapy突破反爬虫的限制
7-1 爬虫和反爬的对抗过程以及策略 Ⅰ.爬虫和反爬虫基本概念 爬虫:自动获取网站数据的程序,关键是批量的获取. 反爬虫:使用技术手段防止爬虫程序的方法. 误伤:反爬虫技术将普通用户识别为爬虫,如果误 ...
- golang代码片段(摘抄)
以下是从golang并发编程实战2中摘抄过来的代码片段,主要是实现一个简单的tcp socket通讯(客户端发送一个数字,服务端计算该数字的立方根然后返回),写的不错,用到了go的并发以及看下郝林大神 ...
- apache2.4和2.2 的一些区别
指令的一些差异 其中的一些指令已经无效,如: Order Deny,Allow Deny from all Allow from all 取而代之的是: Deny from all 变成 Re ...
- JavaScript根据国家二字码获取国家全称
function getCountryNameByCode(code) { var countryName = ''; switch(code) { case "US": coun ...
- DOM基础操作实战代码
对于已经讲解给大家的DOM实战,我今天给大家几个实战代码,可以让大家加深对此的理解! 1.用DOM动态生成这样一个结构: <div class=”example”> <p class ...
- Python随笔目录
Python 一.Python基础 Python入门 数据类型 函数(迭代器生成器三元表达式) 模块和常用内置模块 面向对象 网络编程(socket) 并发编程 ... 二.数据库 MySQL PyM ...