مسارات IEnumerable<T> والتنفيذ المؤجل
أنشئ مسارات LINQ على IEnumerable وتعرّف إلى الفرق بين التنفيذ المؤجل وتحويل النتائج إلى مجموعات باستخدام ToList/ToArray.
مسارات IEnumerable<T> والتنفيذ المؤجل درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.
فكرة خط أنابيب LINQ
خط الأنابيب = سلسلة من العوامل تحوّل تسلسلاً.
- المصدر: IEnumerable<T>
- العوامل: Where وSelect وغيرهما
- المصب: التعداد (foreach) أو التجسيد (ToList)
Where + Select
أنشئ سلسلة تبدأ بـWhere ثم Select. يُنفَّذ الاستعلام أثناء التكرار.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
// Build pipeline: keep even numbers, then square them
var query = numbers
.Where(n => n % 2 == 0)
.Select(n => n * n);
foreach (int x in query)
{
Console.WriteLine(x); // 4, 16
}
}
}
تأثير التنفيذ المؤجل
التنفيذ المؤجل: يُقيَّم الاستعلام عند وقت التعداد، ولذلك يمكنه رؤية التغييرات اللاحقة التي تطرأ على المصدر.
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
List<int> data = new List<int>();
data.Add(1);
data.Add(2);
var evens = data.Where(x => x % 2 == 0); // query is not executed yet
data.Add(3);
data.Add(4); // modify source after building query
foreach (int e in evens)
{
Console.WriteLine(e); // prints 2 and 4 because execution is deferred
}
}
}
التجسيد (ToList)
استخدم ToList/ToArray لتجسيد التسلسل الآن وتجنّب التغييرات اللاحقة في المصدر.
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
List<string> words = new List<string>();
words.Add("apple");
words.Add("banana");
var longOnes = words.Where(w => w.Length >= 6);
List<string> snapshot = longOnes.ToList(); // materialize now
words.Add("pear"); // changes after materialization
words.Add("cherry"); // length 6, but snapshot is already frozen
foreach (string w in snapshot)
{
Console.WriteLine(w); // prints "banana" only
}
}
}
OrderBy + Take
اجمع بين OrderBy وSelect وTake/Skip لإنشاء مسارات معالجة صغيرة وسهلة القراءة.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] nums = new int[] { 5, 1, 4, 2, 3 };
var firstTwoSortedSquares = nums
.OrderBy(n => n) // 1,2,3,4,5
.Select(n => n * n)
.Take(2); // 1,4
foreach (int x in firstTwoSortedSquares)
{
Console.WriteLine(x);
}
}
}
نصائح وملاحظات مهمة
نصائح:
- تنشئ الاستعلامات خطةً، وتُنفَّذ عند تعدادها أو تجسيدها.
- استخدم ToList للتجسيد عندما تحتاج إلى لقطة ثابتة.
- اجعل كل خطوة صغيرة وسمِّها بوضوح.
- تجنّب إعادة تعداد المصادر المكلفة؛ خزّنها في قائمة عند الحاجة.
قاعدة التنفيذ المؤجل
مراجعة
مراجعة: أنشئ مسارات معالجة صغيرة من IEnumerable<T> باستخدام Where وSelect وغيرهما. تذكّر أن التنفيذ مؤجل حتى تكرّر على التسلسل أو تستدعي ToList/ToArray.
الأسئلة الشائعة
هل درس «مسارات IEnumerable<T> والتنفيذ المؤجل» مجاني؟
نعم — نص درس «مسارات IEnumerable<T> والتنفيذ المؤجل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.
ماذا ستتعلم في «مسارات IEnumerable<T> والتنفيذ المؤجل»؟
أنشئ مسارات LINQ على IEnumerable وتعرّف إلى الفرق بين التنفيذ المؤجل وتحويل النتائج إلى مجموعات باستخدام ToList/ToArray. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.
كم من الوقت يستغرق درس «مسارات IEnumerable<T> والتنفيذ المؤجل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- مسارات IEnumerable والتنفيذ المؤجل
- Select وWhere وOrderBy وTake/Skip
- صياغة الاستعلام مقابل صياغة الأساليب