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 مع واجهات المستخدم.
تعليقات
إرسال تعليق