C# Programming

طرق فعّالة لدمج القوائم في C#

Spread the love

يُعد دمج القوائم عملية أساسية في برمجة C#. تتناول هذه المقالة عدة تقنيات فعالة لربط القوائم، لكل منها مزايا وحالات استخدام خاصة به. سنفحص نهجًا مختلفة، بدءًا من الربط البسيط وصولًا إلى عمليات أكثر تعقيدًا مثل الدمج مع إزالة المكررات أو إقران العناصر.

جدول المحتويات

  1. دمج القوائم باستخدام AddRange()
  2. ربط القوائم باستخدام Concat() (LINQ)
  3. دمج القوائم يدويًا باستخدام حلقة foreach
  4. دمج القوائم وإزالة المكررات باستخدام Union() (LINQ)
  5. إدراج قائمة في قائمة أخرى باستخدام InsertRange()
  6. إقران العناصر باستخدام طريقة Zip()
  7. الخلاصة

دمج القوائم باستخدام AddRange()

توفر طريقة AddRange() طريقة مباشرة وفعالة لإضافة قائمة إلى نهاية قائمة أخرى. تُعدّل هذه الطريقة القائمة الأصلية.


using System;
using System.Collections.Generic;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 4, 5, 6 };

        list1.AddRange(list2);

        Console.WriteLine("القائمة المدمجة:");
        Console.WriteLine(string.Join(" ", list1)); // المخرجات: 1 2 3 4 5 6
    }
}

ربط القوائم باستخدام Concat() (LINQ)

توفر طريقة Concat() في LINQ نهجًا للقراءة فقط لربط القوائم. إنها تُنشئ قائمة جديدة تحتوي على جميع العناصر من كلا القائمتين المدخلات دون تغيير القوائم الأصلية.


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

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 4, 5, 6 };

        var joinedList = list1.Concat(list2).ToList();

        Console.WriteLine("القائمة المدمجة:");
        Console.WriteLine(string.Join(" ", joinedList)); // المخرجات: 1 2 3 4 5 6
    }
}

دمج القوائم يدويًا باستخدام حلقة foreach

يوفر النهج اليدوي باستخدام حلقة foreach أقصى قدر من التحكم، وهو مفيد بشكل خاص عند التعامل مع منطق دمج أكثر تعقيدًا.


using System;
using System.Collections.Generic;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 4, 5, 6 };
        List<int> joinedList = new List<int>();

        joinedList.AddRange(list1);
        foreach (int num in list2)
        {
            joinedList.Add(num);
        }

        Console.WriteLine("القائمة المدمجة:");
        Console.WriteLine(string.Join(" ", joinedList)); // المخرجات: 1 2 3 4 5 6

    }
}

دمج القوائم وإزالة المكررات باستخدام Union() (LINQ)

تقوم طريقة Union() بدمج قائمتين بكفاءة مع إزالة الإدخالات المكررة.


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

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 3, 4, 5 };

        var joinedList = list1.Union(list2).ToList();

        Console.WriteLine("القائمة المدمجة (بعد إزالة المكررات):");
        Console.WriteLine(string.Join(" ", joinedList)); // المخرجات: 1 2 3 4 5
    }
}

إدراج قائمة في قائمة أخرى باستخدام InsertRange()

تسمح InsertRange() بإدراج دقيق لقائمة واحدة في أخرى عند مؤشر محدد.


using System;
using System.Collections.Generic;

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3 };
        List<int> list2 = new List<int> { 4, 5, 6 };

        list1.InsertRange(2, list2); // إدراج list2 بدءًا من المؤشر 2

        Console.WriteLine("القائمة المدمجة:");
        Console.WriteLine(string.Join(" ", list1)); // المخرجات: 1 2 4 5 6 3
    }
}

إقران العناصر باستخدام طريقة Zip()

تقوم طريقة Zip() بإقران العناصر المتناظرة من قائمتين بناءً على مؤشرهما. هذا مفيد عندما تحتاج إلى دمج عناصر لها علاقة ترابطية.


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

public class JoinLists
{
    public static void Main(string[] args)
    {
        List<string> list1 = new List<string> { "A", "B", "C" };
        List<int> list2 = new List<int> { 1, 2, 3 };

        var zippedList = list1.Zip(list2, (str, num) => str + num).ToList();

        Console.WriteLine("القائمة المقرنة:");
        Console.WriteLine(string.Join(" ", zippedList)); // المخرجات: A1 B2 C3
    }
}

الخلاصة

توفر C# مجموعة غنية من الأدوات لمعالجة القوائم. يعتمد اختيار الطريقة بشكل كبير على المتطلبات المحددة لمهمتك. ضع في اعتبارك ما إذا كنت بحاجة إلى تعديل القوائم الأصلية أو إزالة المكررات أو إقران العناصر المتناظرة عند اختيار النهج الأنسب.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *