.NET中First,FirstOrDefault,Single,SingleOrDefault的区别
类别:编程学习 浏览量:3307
时间:2015-10-30 .NET中First,FirstOrDefault,Single,SingleOrDefault的区别
.NET中First,FirstOrDefault,Single,SingleOrDefault的区别一、First
取序列中满足条件的第一个元素,如果没有元素满足条件,则抛出异常
二、FirstOrDefault
取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为null的对象,默认值为null,对于不能为null的对象,如int,默认值为0)
三、Single
返回序列中的唯一一条记录,如果没有或返回多条,则引发异常。
四、SingleOrDefault
返回序列中的唯一一条记录,如果序列中不包含任何记录,则返回默认值,如果返回多条,则引发异常。
五、使用场合
1、当确信序列中一定有满足条件的元素时,使用First方法,取到元素后,无需判断是否为null
2、当序列中可能找不到满足条件的元素时,使用FirstOrDefault方法,然后,一定要对返回值是否为null,进行不同的处理
六、实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SingleOrDefaultDemo
{
class Program
{
static void Main(string[] args)
{
var lst = new List<int> { 10, 20, 100, 30, 60, 50, 80 };
//输出结果:10
Console.WriteLine("First:{0}", lst.First());
//输出结果:10
Console.WriteLine("FirstOrDefault:{0}", lst.FirstOrDefault());
//输出结果:100(注:因为这里的First是按List<int>的索引来取第一个符合条件的元素,所以结果是100,而不是按从小到大的顺序)
Console.WriteLine("First:{0}", lst.First(x => x > 30));
//输出结果:100(同上First)
Console.WriteLine("FirstOrDefault:{0}", lst.FirstOrDefault(x => x > 30));
// 抛出异常:序列包含一个以上的元素
//Console.WriteLine("Single:{0}", lst.Single());
// 抛出异常:序列包含一个以上的元素
//Console.WriteLine("SingleOrDefault:{0}", lst.SingleOrDefault());
//抛出异常:序列不包含任何匹配元素
//Console.WriteLine("Single:{0}", lst.Single(x => x > 100));
//输出结果:0
Console.WriteLine("SingleOrDefault:{0}", lst.SingleOrDefault(x => x > 100));
Console.WriteLine("Press any key to quit...");
Console.ReadKey();
}
}
}
标签:linq
您可能感兴趣
- linq 排序
- datatable linq查询
- LINQ中Aggregate的用法
- linq中join用法
- Linq中select查询
- Linq中的TakeWhile和SkipWhile
- linq中延迟执行
- 如何查看linq生成的sql
- linq xml 查询
- Linq中where查询
- 使用 LINQPad 调试linq以及lambda表达式
- linq to sql 中Concat、Union、Intersect、Except
- linq中group by
- linq not in 查询
- LINQ TO SQL 中join
- linq中AsEnumerable和AsQueryable的区别
- 网友很惭愧,自己写了很多年的字,到头来还不如一名小学生写的好(自己写了很多年的字)
- 中华第一楷 张瑞龄 86岁高龄,苦练楷书71年,一幅字卖593万(中华第一楷张瑞龄)
- 冯骥才 年意(冯骥才年意)
- ()
- 百事大吉蓝底 绿底手机高清壁纸(绿底手机高清壁纸)
- 蓝底证件照怎么制作 证件照换底色 换尺寸快速搞定(蓝底证件照怎么制作)
热门推荐
- python协程解释(在python里从协程返回一个值的示例)
- 谷歌浏览器调试工具中sources面板
- pandas数据分组使用方法(在Pandas中DataFrame数据合并,连接concat,merge,join的实例)
- 如何判断数据是json还是字符串(JSON.stringify的多种用法总结)
- sqlserver 数据量需要多少内存(SQL Server在AlwaysOn中使用内存表的“踩坑”记录)
- linux下python安装pip(在Docker中的ubuntu中安装Python3和Pip的问题)
- linq中group by
- 前端app开发适配消息栏(AmazeUI 导航条的实现示例)
- sql server修改sa密码(sqlserver添加sa用户和密码的实现)
- docker容器临时网络连接(Docker与iptables及实现bridge方式网络隔离与通信操作)