First و FirstOrDefault في LINQ

LINQ First() و FirstOrDefault()

في هذا الدرس، سنتعلّم الفرق بين دالتي First و FirstOrDefault في LINQ، وكيفية استخدام كل واحدة منهما.



ما الفرق بين First و FirstOrDefault؟

الدالة ترجع أول عنصر؟ لو القائمة فاضية لو ما فيش عنصر يحقق الشرط
First() ❌ Exception ❌ Exception
FirstOrDefault() ✅ default ✅ default


مثال عملي:


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

// First
int first = numbers.First();               // 10

// FirstOrDefault
int firstOrDefault = numbers.FirstOrDefault();   // 10


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


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

int result1 = emptyList.First();        // Exception
int result2 = emptyList.FirstOrDefault(); // 0


استخدام شرط مع First:


int result = numbers.First(n => n > 20); // 30


ولو ما فيش نتيجة:


int result = numbers.FirstOrDefault(n => n > 50); // 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 = "John" },
    new Student() { ID = 2, Name = "Sara" },
};

Student student = students.FirstOrDefault(s => s.ID == 3);
if (student == null)
    Console.WriteLine("No matching student");
else
    Console.WriteLine(student.Name);


ملاحظات:

  • استخدم First() فقط لو كنت متأكد إن فيه عنصر هيرجع.
  • استخدم FirstOrDefault() لو فيه احتمال تكون النتيجة فاضية.
  • في المشاريع الواقعية، يفضل دائمًا FirstOrDefault() لتفادي الاستثناءات.


تعليقات

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

C# - Arrays

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

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