C# First and FirstOrDefault 方法详解
在工作中我们经常会遇到有关LINQ 的一些问题。这时我们就用到lambda 表达式。
下面是我在工作遇到的。 First and FirstOrDefault 这两方法。我今天把它记录一下。
需要注意的是我标注红色的部分,这是它们俩的区别。
First and FirstOrDefault
#region
Enumberable First() or FirstOrDefault()
/// <summary>
/// 返回序列中的第一个元素;如果序列中不包含任何元素,则返回默认值。
/// 如果 source 为空,则返回 default(TSource);否则返回 source 中的第一个元素。
/// ArgumentNullException sourcevalue 为 null。
/// </summary>
public static void FunFirstOrDefault()
{
//FirstOrDefault()
string[] names = { "Haiming QI", "Har", "Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu", null };
// string[] names = { }; // string 类型的默认值是空 int[] sexs = { , , , , , };
// int[] sexs = { }; // 因为int 类型的默认值是0. 所以当int[] 数组中没有任何元素时。default value is 0; 如果有元素,则返回第一个元素 //原方法: public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source); // 扩展了IEnumerable<TSource> 接口
//string namevalue = names.FirstOrDefault(); // string IEnumerable<string>.FirstOrDefault<string>();
int sexvalue = sexs.FirstOrDefault(); // int IEnumerable<int>.FirstOrDefault<string>();
//string namevalue = names.DefaultIfEmpty("QI").First();
string namevalue = names.FirstOrDefault();
Console.WriteLine("FirstOrDefault(): default(TSource) if source is empty; otherwise, the first element in source:{0}", namevalue); } /// <summary>
/// 返回序列中的第一个元素。
/// 如果 source 中不包含任何元素,则 First<TSource>(IEnumerable<TSource>) 方法将引发异常
/// ArgumentNullException sourcevalue 为 null。
// InvalidOperationException 源序列为空。
/// </summary>
public static void FunFirst()
{
//First()
string[] names = { "Haiming QI", "Har", "Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu", null };
// string[] names = { }; int[] sexs = { , , , , , };
//int[] sexs = { };
int fsex = sexs.First();
string fname = names.First(); // 如果序列中没有元素则会发生,InvalidOperationException 异常。 源序列为空。 Console.WriteLine("First(): Returns the first element of a sequence : {0}", fname); }
#endregion
以上是我在本地验证的code.
需要注意的是:
这都是扩展了IEnumerable 这个接口。
public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source); First 和 FirstOrDefault 最大的区别在于。 当集合(这个集合可以是:Arry,List,等等)中没有元素的时候。 First 会报异常 InvalidOperationException 源序列为空。
而 FirstOrDefault 则不会。
C# First and FirstOrDefault 方法详解的更多相关文章
- session的使用方法详解
session的使用方法详解 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器 ...
- Kooboo CMS - Html.FrontHtml[Helper.cs] 各个方法详解
下面罗列了方法详解,每一个方法一篇文章. Kooboo CMS - @Html.FrontHtml().HtmlTitle() 详解 Kooboo CMS - Html.FrontHtml.Posit ...
- HTTP请求方法详解
HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源] GET方法用来请求已被URI识别的资源.指定 ...
- ecshop后台增加|添加商店设置选项和使用方法详解
有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...
- (转)Spring JdbcTemplate 方法详解
Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- windows.open()、close()方法详解
windows.open()方法详解: window.open(URL,name,features,replace)用于载入指定的URL到新的或已存在的窗口中,并返回代表新窗口的Win ...
- CURL使用方法详解
php采集神器CURL使用方法详解 作者:佚名 更新时间:2016-10-21 对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...
- JAVA 注解的几大作用及使用方法详解
JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...
随机推荐
- angular中的ng-click指令案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 在webstrorm中配置好es6 babel【更新:在webstorm中配置.vue和.vue文件中支持es6】
第一步:全局安装babel-cli npm install -g babel-cli 第二步,新建一个空项目,在 WebStorm 中的当前项目中打开 Terminal,进入项目的根目录下, 安装 E ...
- C# 3.0新加特性
类型推断 申明变量的时候,可以不用直指定类型: var i = 5; var s = "Hello"; //两种写法是一样的 int i = 5; string s = " ...
- SpringMVC(二)@RequestMapping
学习@RequestMapping注解,参考Spring API 1.@RequestMapping可以修饰在类类型和方法上 ①.修饰在类定义上: 提供初步的URL映射,相对于web应用 ...
- vc++实例
- DNS解析过程详解(转载)
DNS解析过程详解(转载) DNS Domain Name System 域名系统,它就是根据域名查出IP地址. 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址ww ...
- JS 100元购物卡,牙刷5元,香皂2元、洗发水15元 100元正好花完有多少种可能
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- shell中的交互模式:expect
在shell开发中,我们连接FTP或者passwd或sudo等操作时,需要手动输入密码.对于自动化而言,这显然是不合适的.而expect的强交互模式解决了这个问题.工作中偶有涉及到这个,个人也是简单的 ...
- 常用HTML小部件
- Linux目录结构组成
linux目录图: / root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp --- 用户所有服务 httpd ...