LINQ - Filtering Operators - Where

LINQ Where Method في C#


دالة Where() في LINQ بتُستخدم لتصفية البيانات واستخراج العناصر اللي بتحقق شرط معين. يعني بنستخدمها علشان نفلتر القوائم أو المصفوفات ونرجّع بس القيم اللي تنطبق عليها شروطنا.



✅ مثال: استخراج الأرقام الزوجية


int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

var evenNumbers = numbers.Where(n => n % 2 == 0);

foreach (var num in evenNumbers)
{
    Console.WriteLine(num);
}

📌 النتيجة: 2 4 6 8



✅ مثال: التصفية على كائنات


public class Student
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

List<Student> studentList = new List<Student>()
{
    new Student(){ ID = 101, Name = "Tom", Age = 23 },
    new Student(){ ID = 102, Name = "Jerry", Age = 25 },
    new Student(){ ID = 103, Name = "Mike", Age = 18 }
};

var filtered = studentList.Where(s => s.Age > 20);

foreach (var student in filtered)
{
    Console.WriteLine(student.Name);
}

📌 النتيجة: Tom و Jerry (لأن أعمارهم أكبر من 20)



✅ مثال: سلسلة شروط (Chained Where)


var result = studentList
                .Where(s => s.Age > 20)
                .Where(s => s.Name.StartsWith("J"));

foreach (var student in result)
{
    Console.WriteLine(student.Name);
}

📌 النتيجة: Jerry فقط (لأنه عمره أكبر من 20 واسمه بيبدأ بحرف J)



✅ باستخدام Query Syntax:


var filteredStudents = from s in studentList
                       where s.Age > 20
                       select s;

foreach (var student in filteredStudents)
{
    Console.WriteLine(student.Name);
}

📌 النتيجة زي المثال السابق باستخدام Method Syntax.



💡 ملاحظات هامة:

  • عامل Where() هو الأساس في عمليات التصفية باستخدام LINQ.
  • تقدر تستخدمه مع القوائم، المصفوفات، أو أي مجموعة من نوع IEnumerable.
  • تقدر تربط أكتر من شرط Where وراء بعض باستخدام Method Chaining.


تعليقات

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

C# - Arrays

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

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