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


تعليقات

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

C# - Arrays

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

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