الفرق بين Deferred Execution و Immediate Execution في LINQ
الفرق بين Deferred Execution و Immediate Execution في LINQ
ما هو Execution في LINQ؟
Execution هو توقيت تنفيذ استعلام LINQ. فيه نوعين رئيسيين:
- Deferred Execution – التنفيذ بيحصل لما تطلب النتيجة فعلًا.
- Immediate Execution – التنفيذ بيحصل مباشرة عند كتابة السطر.
Deferred Execution
يعني الاستعلام مش بيتنفّذ غير لما تتعامل فعليًا مع النتيجة (زي foreach
أو ToList()
).
IEnumerable<int> result = numbers.Where(n => n > 5); // لسه ما تنفّذش
المميزات:
- أفضل في الأداء لأنه بيتأخر لحد ما تحتاج النتيجة.
- بيسمح باستخدام متغيرات تتغير قبل التنفيذ.
- بيوفر في الذاكرة.
Immediate Execution
يعني إن الاستعلام بيتنفّذ فورًا بمجرد كتابته لو استخدمت دالة زي ToList()
أو Count()
إلخ.
List<int> result = numbers.Where(n => n > 5).ToList(); // تنفّذ فورًا
أمثلة على Immediate Execution:
ToList()
ToArray()
Count()
Sum()
Average()
مقارنة سريعة:
النوع | وقت التنفيذ | أمثلة |
---|---|---|
Deferred Execution | عند الوصول للبيانات | Where , Select |
Immediate Execution | فورًا عند الاستدعاء | ToList , Count , Sum |
ملاحظات:
Where
وSelect
وOrderBy
→ Deferred.ToList
وCount
وSum
→ Immediate.
تعليقات
إرسال تعليق