首页 / 教程列表 / LINQ教程 / LINQ操作符之Last与LastOrDefault

LINQ操作符之Last与LastOrDefault

481 更新于: 2022-04-29 读完约需 10 分钟

Last与LastOrDefault概述

LastLastOrDefault方法都用以返回集合中最后一个索引位置的元素。此外,它还返回满足指定条件的最后一个元素。

LastLastOrDefault分别有两个重载方法。第一个重载方法不接受任何输入参数,而是返回集合中的最后一个元素。第二个重载方法接受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返回集合中的最后一个元素

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

下面的示例程序中,创建了一个包含整数的集合numbers,然后使用Last方法获取最后一个元素:

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTutorial
{
    public class MyProgram
    {
        static void Main(string[] args)
        {
            var numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var result = numbers.Last();
            Console.WriteLine($"集合numbers中最后个元素值为:{result}");

            Console.Read();
        }
    }
}

运行结果:

集合numbers中最后一个元素值为:10

Last条件筛选最后一个元素

以下是使用Last的带lambda表达式参数的重载对集合numbers进行筛选后,再获取最后一个元素的示例:

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTutorial
{
    public class MyProgram
    {
        static void Main(string[] args)
        {
            var numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var result = numbers.Last(x => x < 5);
            Console.WriteLine($"集合numbers中小于5的最后一个元素值为:{result}");

            Console.Read();
        }
    }
}

运行结果:

集合numbers中小于5的最后一个元素值为:4

Last超出索引范围

Last操作的集合没有元素时,会抛出异常,所示如下:

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTutorial
{
    public class MyProgram
    {
        static void Main(string[] args)
        {
            var numbers = new List<int>() { };
            var result = numbers.Last();
            Console.WriteLine($"集合numbers中最后一个元素值为:{result}");

            Console.Read();
        }
    }
}

运行抛出“索引超出范围”的异常如下:

LastOrDefault返回集合中的最后一个元素

LastOrDefault()方法的使用与Last方法类似,二者的主要区别在于,当操作的集合没有元素时,LastOrDefault不会抛出“索引超出范围”的异常(它将根据集合包含的元素的数据类型返回默认值),而Last则会抛出异常。

下面的示例程序中,创建了一个包含整数的集合numbers,然后使用LastOrDefault方法获取最后一个元素:

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTutorial
{
    public class MyProgram
    {
        static void Main(string[] args)
        {
            var numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var result = numbers.LastOrDefault();
            Console.WriteLine($"集合numbers中最后一个元素值为:{result}");

            Console.Read();
        }
    }
}

运行结果:

集合numbers中最后一个元素值为:10

以下示例演示使用LastOrDefault方法获取空集合numbers的最后一个元素:

using System;
using System.Collections.Generic;
using System.Linq;

namespace LinqTutorial
{
    public class MyProgram
    {
        static void Main(string[] args)
        {
            var numbers = new List<int> { };
            var result = numbers.LastOrDefault();
            Console.WriteLine($"集合numbers的最后一个元素值为:{result}");

            Console.Read();
        }
    }
}

运行结果:

集合numbers的最后一个元素值为:0

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

本文永久链接码友网 » LINQ教程 » LINQ操作符之Last与LastOrDefault 分享:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册