LINQ Cross Join
LINQ Cross Join
في هذا الدرس، سنتعلم كيفية تنفيذ Cross Join في LINQ بلغة C# باستخدام كل من Query Syntax و Method Syntax.
ما هو Cross Join؟
Cross Join يُنتج الضرب الديكارتي بين مجموعتين.
يعني لو عندك 3 طلاب و4 كورسات → الناتج = 12 صف.
تعريف الكائنات:
public class Student
{
public string StudentName { get; set; }
}
public class Course
{
public string CourseName { get; set; }
}
البيانات:
List<Student> students = new List<Student>()
{
new Student() { StudentName = "John" },
new Student() { StudentName = "Moin" },
new Student() { StudentName = "Bill" }
};
List<Course> courses = new List<Course>()
{
new Course() { CourseName = "C#" },
new Course() { CourseName = "SQL" },
new Course() { CourseName = "LINQ" },
new Course() { CourseName = "Azure" }
};
Cross Join باستخدام Query Syntax:
var crossJoinQuery = from student in students
from course in courses
select new
{
Student = student.StudentName,
Course = course.CourseName
};
Cross Join باستخدام Method Syntax:
var crossJoinMethod = students
.SelectMany(student => courses,
(student, course) => new
{
Student = student.StudentName,
Course = course.CourseName
});
الناتج:
John - C#
John - SQL
John - LINQ
John - Azure
Moin - C#
Moin - SQL
Moin - LINQ
Moin - Azure
Bill - C#
Bill - SQL
Bill - LINQ
Bill - Azure
شرح سريع:
- Query Syntax: استخدمنا from داخل from لتكرار الكورسات لكل طالب.
- Method Syntax: استخدمنا SelectMany وهو المقابل لـ Cross Join.
- كل طالب طُبّق عليه كل كورس.
ملاحظات هامة:
- لا يتطلب شرط ربط مثل Inner Join.
- ينتج عدد كبير من الصفوف، فكن حذرًا مع البيانات الكبيرة.
تعليقات
إرسال تعليق