Cả Last () và LastOrDefault () sẽ tìm nạp lần xuất hiện cuối cùng của một giá trị. Nhưng sự khác biệt chính giữa Last () và LastOrDefault () là Last () sẽ ném một ngoại lệ nếu không có dữ liệu kết quả cho tiêu chí được cung cấp trong khi LastOrDefault () sẽ trả về giá trị mặc định (null) nếu không có dữ liệu kết quả.
Sử dụng Last () khi chúng ta biết dãy sẽ có ít nhất một phần tử. Sử dụng LastOrDefault () khi chúng tôi không chắc chắn về dữ liệu.
Ví dụ
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; namespace ConsoleApp { public class Student { public int Id { get; set; } public string Name { get; set; } } class Program { static void Main() { var studentsList = new List<Student> { new Student { Id = 1, Name = "John" }, new Student { Id = 2, Name = "Jack" }, new Student { Id = 1, Name = "Jill" } }; var lastOrDefaultStudent = studentsList.LastOrDefault(student => student.Id == 1); var lastStudent = studentsList.Last(student => student.Id == 1); Console.WriteLine($"LastOrDefault: {lastOrDefaultStudent.Id} {lastOrDefaultStudent.Name}"); Console.WriteLine($"Last: {lastStudent.Id} {lastStudent.Name}"); Console.ReadLine(); } } }
Đầu ra
Đầu ra của đoạn mã trên là
LastOrDefault: 1 Jill Last: 1 Jill
Ví dụ
using System; using System.Collections.Generic; using System.Linq; namespace DemoApplication { class Program { static void Main(string[] args) { try { var studentsList = new List<Student> { new Student { Id = 1, Name = "John" }, new Student { Id = 2, Name = "Jack" } }; var lastOrDefaultStudent = studentsList.LastOrDefault(student => student.Id == 3); var value = lastOrDefaultStudent == null ? "null" : ""; Console.WriteLine($"LastOrDefault: {value}"); var lastStudent = studentsList.Last(student => student.Id == 3); } catch (Exception ex) { Console.WriteLine($"Last Exception: {ex.Message}"); Console.ReadLine(); } } } public class Student { public int Id { get; set; } public string Name { get; set; } } }
Đầu ra
Đầu ra của đoạn mã trên là
LastOrDefault: null Last Exception: Sequence contains no matching element
Ở đây Id "3" không có trong danh sách sinh viên. Do đó LastOrDefault () trả về giá trị null trong khi Last () trả về một ngoại lệ.