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