LINQ ToList() و ToArray()

شرح ToList() و ToArray() في LINQ

في هذا الدرس، سنتعرف على كيفية استخدام دالتي ToList() وToArray() في LINQ لتحويل نتائج الاستعلام إلى قائمة (List<T>) أو مصفوفة (T[]).

كلا الدالتين تُستخدمان لتنفيذ التنفيذ الفوري (Immediate Execution)، مما يعني أن الاستعلام يتم تنفيذه في اللحظة التي تُستدعى فيها إحدى الدالتين وتُخزّن النتيجة في الذاكرة.


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


List<T> listResult = query.ToList();
T[] arrayResult = query.ToArray();


مثال عملي باستخدام ToList():


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

var evenNumbers = numbers
    .Where(n => n % 2 == 0)
    .ToList();

foreach (var num in evenNumbers)
{
    Console.WriteLine(num);
}


الناتج:


2
4


مثال عملي باستخدام ToArray():


int[] array = numbers
    .Where(n => n > 3)
    .ToArray();

foreach (var num in array)
{
    Console.WriteLine(num);
}

الناتج:


4
5


الفرق بين ToList() و ToArray():

المقارنة ToList() ToArray()
نوع النتيجة List<T> T[]
قابلية الإضافة ✅ يمكن الإضافة أو الحذف ❌ لا يمكن (مصفوفة ثابتة)
الأداء أبطأ قليلاً (بسبب المرونة) أسرع قليلاً
الاستخدام الشائع عند الحاجة للتعديل أو الإضافة عند الحاجة للأداء أو الثبات


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

  • عندما تحتاج إلى إضافة أو حذف عناصر من النتيجة.
  • عند التعامل مع كائنات List<T> وتحتاج إلى مرونة.


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

  • عندما تحتاج إلى مجموعة ثابتة الحجم.
  • إذا كنت تتعامل مع مكتبات أو دوال تتطلب مصفوفة.
  • عندما تهتم بالأداء في بعض السيناريوهات.


ملاحظة مهمة:

إذا لم تستخدم ToList() أو ToArray()، فإن استعلام LINQ يبقى كسولًا (Deferred Execution)، أي أنه لن يتم تنفيذه إلا عند التكرار عليه فعليًا (مثلًا باستخدام foreach).

تعليقات

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

C# - Arrays

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

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