تخطَّ إلى المحتوى

Where / Select

تصفية وتحويل LINQ (Where و Select) Where / Select

Where تُصفّي عناصر مجموعة حسب شرط، وSelect تحوّل كل عنصر إلى شكل جديد — أساس معظم استعلامات LINQ.

Where تأخذ دالة تُرجع bool وتُبقي فقط العناصر التي تحقّقها. Select تأخذ دالة تحويل وتُنتج مجموعة جديدة بنفس عدد العناصر لكن بشكل مختلف (إسقاط/projection) — كلتاهما لا تعدّلان المصدر الأصلي بل تُنتجان تسلسلًا جديدًا يُقيَّم بكسل (lazy) عند المرور عليه فعليًا.

يمكن سلسلتهما مع عوامل LINQ أخرى مثل OrderBy وFirstOrDefault لبناء استعلام معبّر بسطر واحد بدل حلقات for متداخلة.

الصياغة

collection.Where(x => condition)
          .Select(x => transform)

📄 مثال

var numbers = new List<int> { 1, 2, 3, 4, 5, 6 };

var evenSquares = numbers
    .Where(n => n % 2 == 0)
    .Select(n => n * n);

foreach (var n in evenSquares)
    Console.WriteLine(n);   // 4, 16, 36

أهم النقاط

العنصرالوظيفة
Where(x => bool)يُبقي العناصر التي تحقّق الشرط فقط
Select(x => y)يحوّل كل عنصر إلى شكل جديد
تقييم كسوللا يُنفَّذ الاستعلام فعليًا إلا عند التكرار عليه (foreach أو ToList)

💡 نصائح عملية

  • أضف .ToList() في نهاية السلسلة إن أردت تنفيذ الاستعلام فورًا وتخزين النتيجة بدل إعادة حسابها كل مرة تمرّ عليها

⚠️ أخطاء شائعة

  • استدعاء الاستعلام نفسه أكثر من مرة (foreach ثم .Count()) يعيد تنفيذه من الصفر في كل مرة بسبب التقييم الكسول

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CSHARP الكامل بالعربي.