猿教程 Logo

Linq元素操作符:Last & LastOrDefault

元素运算符描述
Last返回集合中的最后一个元素,或者满足条件的最后一个元素
LastOrDefault返回集合中的最后一个元素,或者满足条件的最后一个元素。 如果不存在此类元素,则返回默认值。

Last和LastOrDefault有两个重载方法。 一个重载方法不接受任何输入参数,并从集合中返回最后一个元素。 第二个重载方法使用一个lambda表达式来指定一个条件,并返回满足指定条件的最后一个元素。

相关实例:

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

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

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

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

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

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

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

相关实例:

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("Last Element in intList: {0}", intList.Last());

Console.WriteLine("Last Even Element in intList: {0}", intList.Last(i => i % 2 == 0));

Console.WriteLine("Last Element in strList: {0}", strList.Last());

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

运行结果:

Last Element in intList: 87 
Last Even Element in intList: 50
Last Element in strList: Five
emptyList.Last() throws an InvalidOperationException
-------------------------------------------------------------
Run-time exception: Sequence contains no elements...

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

相关实例:

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("Last Element in intList: {0}", intList.LastOrDefault());

Console.WriteLine("Last Even Element in intList: {0}",
                                 intList.LastOrDefault(i => i % 2 == 0));

Console.WriteLine("Last Element in strList: {0}", strList.LastOrDefault());

Console.WriteLine("Last Element in emptyList: {0}", emptyList.LastOrDefault());

运行结果:

Last Element in intList: 7 
Last Even Element in intList: 10
Last Element in strList: 
Last Element in emptyList:

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

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

相关实例:

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("Last Element which is greater than 250 in intList: {0}", 
                                intList.Last(i => i > 250));

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

运行结果:

Run-time exception: Sequence contains no matching element


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