LINQ DefaultIfEmpty

LINQ DefaultIfEmpty()

في هذا الدرس، سنتعلّم كيفية استخدام دالة DefaultIfEmpty() في LINQ، والتي تُستخدم لإرجاع القيمة الافتراضية إذا كانت المجموعة فارغة.



ما هي DefaultIfEmpty؟

  • تُرجع نفس العناصر إذا كانت المجموعة غير فارغة.
  • تُرجع عنصرًا واحدًا فقط إذا كانت المجموعة فارغة، والقيمة تكون:
    • default لنوع العنصر (مثل 0 أو null).
    • أو قيمة مخصصة تُمرر للدالة.


الصيغة العامة:


var result = collection.DefaultIfEmpty();
var result2 = collection.DefaultIfEmpty(customValue);


مثال 1: مع نوع int فارغ


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

var result = numbers.DefaultIfEmpty();

foreach (var number in result)
{
    Console.WriteLine(number); // 0
}


مثال 2: مع string فارغة


List<string> names = new List<string>();

var result = names.DefaultIfEmpty();

foreach (var name in result)
{
    Console.WriteLine(name ?? "null");
}


مثال 3: تمرير قيمة مخصصة


var result = names.DefaultIfEmpty("No Name");

foreach (var name in result)
{
    Console.WriteLine(name); // No Name
}


مثال 4: استخدام مع Left Outer Join


var result = from dept in departments
             join emp in employees
             on dept.ID equals emp.DepartmentID into empGroup
             from emp in empGroup.DefaultIfEmpty()
             select new
             {
                 Department = dept.Name,
                 Employee = emp != null ? emp.Name : "No Employee"
             };


جدول توضيحي:

الحالة النتيجة
المجموعة تحتوي على عناصر نفس العناصر
المجموعة فارغة عنصر واحد: القيمة الافتراضية
النوع المرجعي null
النوع القيمي مثل 0 أو false


تعليقات

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

C# - Arrays

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

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