Append() في LINQ

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

دالة Append() في LINQ تُستخدم لإضافة عنصر واحد إلى نهاية تسلسل من النوع IEnumerable<T> دون تعديل المصدر الأصلي. تم تقديمها في .NET Core 3.0 وتتوفر في .NET 5 والإصدارات الأحدث.


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


IEnumerable<TSource> updatedSequence = originalSequence.Append(newElement);
  • originalSequence: التسلسل الأصلي من النوع IEnumerable<TSource>.
  • newElement: العنصر المراد إضافته في نهاية التسلسل.


مثال عملي:


using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        // قائمة من الأعداد الصحيحة
        List<int> numbers = new List<int> { 1, 2, 3, 4 };

        // إضافة الرقم 5 إلى نهاية القائمة باستخدام Append()
        var updatedNumbers = numbers.Append(5);

        Console.WriteLine("القائمة الأصلية:");
        foreach (var num in numbers)
        {
            Console.Write($"{num} ");
        }

        Console.WriteLine("\nالقائمة بعد استخدام Append():");
        foreach (var num in updatedNumbers)
        {
            Console.Write($"{num} ");
        }
    }
}


الناتج:


القائمة الأصلية:
1 2 3 4 
القائمة بعد استخدام Append():
1 2 3 4 5 


ملاحظات:

  • Append() لا تُعدّل التسلسل الأصلي، بل تُعيد تسلسلًا جديدًا.
  • لتحويل التسلسل الجديد إلى List<T>، استخدم ToList():

List<int> updatedList = numbers.Append(5).ToList();



مقارنة بين Append() و Add():

الميزة Append() Add()
التأثير على الأصل ❌ لا يغيّر الأصل ✅ يغيّر القائمة الأصلية
نوع البيانات IEnumerable<T> List<T>
طريقة التنفيذ تنفيذ مؤجل (Deferred) تنفيذ فوري (Immediate)


استخدامات عملية:

  • إضافة عنصر إلى تسلسل دون التعديل على الأصل.
  • مفيد في البرمجة الوظيفية لتجنب تعديل البيانات الأصلية.


ملاحظات إضافية:

  • كل استدعاء لـ Append() يُنشئ نسخة جديدة من التسلسل.
  • لإضافة عناصر متعددة، استخدم Concat() أو AddRange() بعد تحويل التسلسل إلى قائمة.


مثال على استخدام Concat() لإضافة عدة عناصر:


var updatedNumbers = numbers.Concat(new[] { 5, 6, 7 });

تعليقات

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

C# - Arrays

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

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