LINQ Join مع مصادر بيانات متعددة (Multiple Data Sources)

LINQ Join مع مصادر بيانات متعددة

في الدرس ده هنتعلم إزاي نربط أكثر من مجموعة بيانات (Collections) باستخدام LINQ – زي الطلاب، الفصول الدراسية، والمواد.



تعريف الكائنات:


public class Student
{
    public int StudentID { get; set; }
    public string StudentName { get; set; }
    public int StandardID { get; set; }
    public int SubjectID { get; set; }
}

public class Standard
{
    public int StandardID { get; set; }
    public string StandardName { get; set; }
}

public class Subject
{
    public int SubjectID { get; set; }
    public string SubjectName { get; set; }
}


البيانات:


List<Student> studentList = new List<Student>()
{
    new Student() { StudentID = 1, StudentName = "John", StandardID = 1, SubjectID = 1 },
    new Student() { StudentID = 2, StudentName = "Moin", StandardID = 1, SubjectID = 2 },
    new Student() { StudentID = 3, StudentName = "Bill", StandardID = 2, SubjectID = 1 },
    new Student() { StudentID = 4, StudentName = "Ram", StandardID = 2, SubjectID = 3 },
    new Student() { StudentID = 5, StudentName = "Ron", StandardID = 3, SubjectID = 2 }
};

List<Standard> standardList = new List<Standard>()
{
    new Standard(){ StandardID = 1, StandardName = "Standard 1"},
    new Standard(){ StandardID = 2, StandardName = "Standard 2"},
    new Standard(){ StandardID = 3, StandardName = "Standard 3"}
};

List<Subject> subjectList = new List<Subject>()
{
    new Subject(){ SubjectID = 1, SubjectName = "Math"},
    new Subject(){ SubjectID = 2, SubjectName = "English"},
    new Subject(){ SubjectID = 3, SubjectName = "Physics"}
};


تنفيذ Join باستخدام Query Syntax:


var result = from student in studentList
             join standard in standardList
             on student.StandardID equals standard.StandardID
             join subject in subjectList
             on student.SubjectID equals subject.SubjectID
             select new
             {
                 student.StudentName,
                 standard.StandardName,
                 subject.SubjectName
             };


المخرجات:


StudentName = John, StandardName = Standard 1, SubjectName = Math  
StudentName = Moin, StandardName = Standard 1, SubjectName = English  
StudentName = Bill, StandardName = Standard 2, SubjectName = Math  
StudentName = Ram, StandardName = Standard 2, SubjectName = Physics  
StudentName = Ron, StandardName = Standard 3, SubjectName = English  


شرح الكود:

  • الـ Join الأول بيربط الطلاب بالفصول الدراسية عن طريق StandardID.
  • الـ Join الثاني بيربط الطلاب بالمواد الدراسية عن طريق SubjectID.
  • الناتج بيعرض اسم الطالب، الفصل اللي فيه، والمادة اللي بياخدها.


ملاحظات:

  • تقدر تعمل Join على أكتر من مجموعة بسهولة في LINQ باستخدام query syntax.
  • كل join لازم يكون فيه شرط equals واضح يربط البيانات ببعض.
  • الأسلوب ده مهم جدًا في الحالات اللي عندك فيها علاقات متعددة زي جداول قواعد البيانات.


تعليقات

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

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

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