Last و LastOrDefault في LINQ

LINQ Last() و LastOrDefault()

في هذا الدرس، سنتعرّف على دالتي Last و LastOrDefault في LINQ، وكيف نستخدم كل واحدة مع الأمثلة.



الفرق الأساسي:

الدالة ترجع آخر عنصر؟ ترجع قيمة افتراضية لو فاضي؟ ترمي استثناء لو مفيش؟
Last()
LastOrDefault()


مثال عملي:


List<int> numbers = new List<int>() { 10, 20, 30, 40, 50 };

// استخدام Last
int last = numbers.Last();           // 50
Console.WriteLine(last);

// استخدام LastOrDefault
int lastOrDefault = numbers.LastOrDefault();   // 50
Console.WriteLine(lastOrDefault);


لو القائمة فاضية:


List<int> emptyList = new List<int>();

// Last يرمي استثناء
int error = emptyList.Last();

// LastOrDefault يرجع 0
int safe = emptyList.LastOrDefault();


مع الشروط:


// آخر عدد زوجي
int lastEven = numbers.Last(n => n % 2 == 0); // 50

// عدد أكبر من 60 (مش موجود)
int lastAbove60 = numbers.LastOrDefault(n => n > 60); // 0


مثال باستخدام كائنات:


public class Student
{
    public int ID { get; set; }
    public string Name { get; set; }
}

List<Student> students = new List<Student>()
{
    new Student() { ID = 1, Name = "Ali" },
    new Student() { ID = 2, Name = "Sara" },
    new Student() { ID = 3, Name = "Ali" }
};

Student result = students.LastOrDefault(s => s.Name == "Ali");
// يرجّع الطالب اللي ID = 3


جدول مقارنة سريع:

الحالة Last() LastOrDefault()
القائمة فيها عناصر ✅ يرجع آخر عنصر ✅ يرجع آخر عنصر
القائمة فاضية ❌ استثناء ✅ default
لا يوجد عنصر يحقق الشرط ❌ استثناء ✅ default


متى تستخدم؟

  • استخدم Last() فقط لما تتأكد إن فيه بيانات.
  • استخدم LastOrDefault() لو فيه احتمال تكون النتيجة فاضية عشان تتفادى الاستثناءات.


تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework