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واضح يربط البيانات ببعض. - الأسلوب ده مهم جدًا في الحالات اللي عندك فيها علاقات متعددة زي جداول قواعد البيانات.
تعليقات
إرسال تعليق