Phương thức Last() trong LINQ trả về phần tử cuối cùng của một chuỗi (sequence). Ném ngoại lệ nếu chuỗi rỗng.
Ví dụ cơ bản
int[] val = { 5, 8, 15, 25, 40, 55, 80, 100 };
int last = val.AsQueryable().Last(); // 100
Mã nguồn hoàn chỉnh
using System;
using System.Collections.Generic;
using System.Linq;
class Demo
{
static void Main()
{
int[] val = { 5, 8, 15, 25, 40, 55, 80, 100 };
int last_num = val.AsQueryable().Last();
Console.WriteLine("Last element: " + last_num);
}
}
Kết quả
Last element: 100
Các biến thể Last
| Phương thức | Mô tả | Khi rỗng |
|---|---|---|
Last() | Phần tử cuối | Ném InvalidOperationException |
LastOrDefault() | Phần tử cuối hoặc default(T) | Trả về 0/null |
Last(predicate) | Phần tử cuối thỏa điều kiện | Ném exception |
LastOrDefault(predicate) | Phần tử cuối thỏa hoặc default | Trả về default |
Ví dụ Last với điều kiện
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int lastEven = numbers.Last(n => n % 2 == 0); // 8
Hiệu suất: Last() vs Index
// Mảng/List - O(1) trực tiếp
int last = arr[arr.Length - 1];
int last = list[list.Count - 1];
// IEnumerable tổng quát - O(n) phải duyệt hết
int last = enumerable.Last();
Lưu ý
- Với mảng/List, dùng index
[^1](C# 8+) hoặc[Count-1]nhanh hơn LINQ. Last()duyệt toàn bộ chuỗi nếu không phảiIList.- Kiểm tra
Any()trước nếu không chắc chắn có phần tử.