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
).
تعليقات
إرسال تعليق