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()
لو فيه احتمال تكون النتيجة فاضية عشان تتفادى الاستثناءات.
تعليقات
إرسال تعليق