LINQ Prepend Method في C#

شرح دالة Prepend() في LINQ

في هذا الدرس، سنتعلّم طريقة استخدام دالة Prepend() في LINQ، والتي تُستخدم لإضافة عنصر إلى بداية التسلسل دون التأثير على التسلسل الأصلي.

تم تقديمها بدءًا من .NET Core 3.0 وتتوفر أيضًا في .NET 5 وما بعده.


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


IEnumerable<T> result = source.Prepend(element);
  • source: التسلسل الأصلي من النوع IEnumerable<T>.
  • element: العنصر الذي تريد إضافته في البداية.
  • result: تسلسل جديد يحتوي على element أولاً، ثم باقي العناصر.


مثال عملي:


List<string> names = new List<string> { "Sara", "Alaa", "Noor" };

var updatedNames = names.Prepend("Mahmoud");

foreach (var name in updatedNames)
{
    Console.WriteLine(name);
}


الناتج:


Mahmoud  
Sara  
Alaa  
Noor


ملاحظات هامة:

  • Prepend() لا تُعدّل المصدر الأصلي بل تُعيد تسلسل جديد.
  • لتحويل الناتج إلى List يمكن استخدام ToList():

var newList = names.Prepend("Mahmoud").ToList();



الفرق بين Prepend() و Insert():

المقارنة Prepend() Insert(index, item)
التأثير على الأصل ❌ لا يُعدّل الأصل ✅ يُعدّل القائمة الأصلية
نوع البيانات يعمل على IEnumerable<T> يعمل فقط على List<T>
مكان الإضافة في البداية فقط في أي موقع
طريقة التنفيذ تنفيذ مؤجل (Deferred) تنفيذ فوري (Immediate)


مثال آخر باستخدام أعداد صحيحة:


var numbers = new List<int> { 2, 3, 4 };

var result = numbers.Prepend(1);

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


الناتج:


1  
2  
3  
4



متى تستخدم Prepend()؟

  • عندما تريد إضافة عنصر افتتاحي أو "Placeholder" مثل: -- اختر قيمة --.
  • عند الحاجة لتوليد تسلسل جديد دون التأثير على المصدر.
  • عند استخدام البرمجة الوظيفية (Functional Programming).

تحب أجهز لك مثال واقعي في Blazor يضيف عنصر افتتاحي لقائمة Dropdown باستخدام Prepend()؟ هيكون مثال عملي ممتاز على دمج LINQ مع واجهات المستخدم.

تعليقات

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

C# - Arrays

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

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