Ngôn ngữ LINQ - Toán tử Last

Phương thức Last trong LINQ

Trái ngược với phương thức First, Phương thức Last trả về phần tử cuối cùng của danh sách hoặc phần tử cuối cùng thỏa mãn điều kiện. Nếu không có phần tử như vậy tồn tại sẽ ném ra ngoại lệ.

Phương thức Last có hai phương thức quá tải. Phương thức quá tải đầu tiên không lấy bất kỳ tham số đầu vào nào và trả về phần tử cuối cùng trong danh sách.

Phương thức quá tải thứ hai lấy biểu thức lambda làm predicate delegate để chỉ định một điều kiện và trả về phần tử cuối cùng thỏa mãn điều kiện đã chỉ định.


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

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

Phương thức Last trả về phần tử cuối cùng của danh sách hoặc phần tử cuối cùng thỏa mãn điều kiện đã chỉ định bằng biểu thức lambda hoặc delegate Func.

Nếu một danh sách rỗng hoặc không có bất kỳ phần tử nào thỏa mãn điều kiện thì nó sẽ ném ra ngoại lệ InvalidOperation.

Ví dụ sau đây minh họa phương thức Last:

IList<int> intList = new List<int>() { 7, 10, 21, 30, 45, 50, 87 };
IList<string> strList = new List<string>() { "One", "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());

Đây là kết quả khi biên dịch và thực thi chương trình:

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...

Hãy cẩn thận trong khi chỉ định điều kiện trong phương thức Last. Nó sẽ đưa ra một ngoại lệ nếu danh sách không có bất kỳ phần tử nào thỏa mãn điều kiện đã chỉ định.