.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
您可能感兴趣
- 使用 LINQPad 调试linq以及lambda表达式
- Linq操作Datable
- LINQ中Aggregate的用法
- Linq中select查询
- 如何查看linq生成的sql
- Linq中的TakeWhile和SkipWhile
- linq not in 查询
- linq中join用法
- linq中let
- linq中group by
- list使用linq排序
- Linq中where查询
- linq distinct去重
- linq中延迟执行
- datatable linq查询
- linq to sql 中Concat、Union、Intersect、Except
- 菲律宾特产(菲律宾特产最值得买回国)
- 越南特产(越南特产首饰)
- TVB负评王连续挑战警察角色《使徒行者3》中将饰演卧底(TVB负评王连续挑战警察角色使徒行者3中将饰演卧底)
- 《精英律师》剧照首曝光,实力演员飙戏,演绎律政职场百态(精英律师剧照首曝光)
- 靳东领衔打造高精职场 新丽出品《精英律师》曝定妆照(靳东领衔打造高精职场)
- 靳东新剧《精英律师》定档,众星云集,这剧可追(靳东新剧精英律师定档)
热门推荐
- docker常用操作(docker常用命令汇总)
- 数据库mysql基本知识(深入理解r2dbc在mysql中的使用)
- mysql类型转换函数推荐(mysql 数据类型转换的实现)
- linux下如何启动phpstudy面板(详解phpstudy linux web面板小皮面板V0.2版本正式发布)
- SQL中FOR XML PATH
- mvc中@helper的用法
- jQuery如何跳出each循环
- iis搭建web服务器和ftp教程(Windows实例通过IIS如何搭建多个FTP站点?)
- docker从一个容器中退出来(Docker容器迁移到其他服务器的5种方法详解)
- vuefor指令使用教程(Vue必学知识点之forEach的使用)