猿教程 Logo

Linq元素操作符:First & FirstOrDefault

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

First和FirstOrDefault方法从集合中的第零个索引(即第一个元素)返回一个元素。 此外,它返回一个满足指定条件的元素。

元素运算符描述
First返回集合的第一个元素或满足条件的第一个元素。
FirstOrDefault返回集合的第一个元素或满足条件的第一个元素。 如果索引超出范围,则返回默认值。

First和FirstOrDefault有两个重载方法。 第一个重载方法不接受任何输入参数,并返回集合中的第一个元素。 第二个重载方法将lambda表达式作为谓词委托来指定条件,并返回满足指定条件的第一个元素。

相关实例:

public static TSource First<TSource>(this IEnumerable<TSource> source);

public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source);

public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

First()方法使用lambda表达式或Func委托返回集合的第一个元素,或者满足指定条件的第一个元素。 如果给定的集合为空或者不包含任何满足条件的元素,那么它将抛出InvalidOperation异常。

FirstOrDefault()方法执行与First()方法相同的操作。 唯一的区别是,如果集合为空或找不到满足条件的任何元素,则返回集合的数据类型的默认值。

以下示例演示了First()方法。

相关实例:

IList<int> intList = new List<int>() { 7, 10, 21, 30, 45, 50, 87 };
IList<string> strList = new List<string>() { null, "Two", "Three", "Four", "Five" };
IList<string> emptyList = new List<string>();
		
Console.WriteLine("1st Element in intList: {0}", intList.First());
Console.WriteLine("1st Even Element in intList: {0}", intList.First(i => i % 2 == 0));

Console.WriteLine("1st Element in strList: {0}", strList.First());

Console.WriteLine("emptyList.First() throws an InvalidOperationException");
Console.WriteLine("-------------------------------------------------------------");
Console.WriteLine(emptyList.First());

运行结果:

1st Element in intList: 7 
1st Even Element in intList: 10
1st Element in strList: 
emptyList.First() throws an InvalidOperationException
-------------------------------------------------------------
Run-time exception: Sequence contains no elements...

以下示例演示了FirstOrDefault()方法。

相关实例:

IList<int> intList = new List<int>() { 7, 10, 21, 30, 45, 50, 87 };
IList<string> strList = new List<string>() { null, "Two", "Three", "Four", "Five" };
IList<string> emptyList = new List<string>();
		
Console.WriteLine("1st Element in intList: {0}", intList.FirstOrDefault());
Console.WriteLine("1st Even Element in intList: {0}",
                                 intList.FirstOrDefault(i => i % 2 == 0));

Console.WriteLine("1st Element in strList: {0}", strList.FirstOrDefault());

Console.WriteLine("1st Element in emptyList: {0}", emptyList.FirstOrDefault());

运行结果:

1st Element in intList: 7 
1st Even Element in intList: 10
1st Element in strList: 
1st Element in emptyList:

在First()或FirstOrDefault()中指定条件时请小心。 如果集合不包含任何满足指定条件或包含空元素的元素,First()将抛出异常。

如果集合包含空元素,则FirstOrDefault()在评估指定条件时抛出异常。 下面的例子演示了这一点。

相关实例:

IList<int> intList = new List<int>() { 7, 10, 21, 30, 45, 50, 87 };
IList<string> strList = new List<string>() { null, "Two", "Three", "Four", "Five" };
		
Console.WriteLine("1st Element which is greater than 250 in intList: {0}", 
                                intList.First( i > 250));

Console.WriteLine("1st Even Element in intList: {0}", 
                                strList.FirstOrDefault(s => s.Contains("T")));

运行结果:

Run-time exception: Sequence contains no matching element
阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Linq/linq-element-operator-first-firstordefault.html