LINQ Group Join
LINQ Group Join
في هذا الدرس هنتعلّم إزاي نستخدم Group Join في LINQ بلغة C#، سواء باستخدام Query Syntax أو Method Syntax.
ما هو Group Join؟
Group Join بيربط عنصر من مجموعة (زي Standard) بمجموعة عناصر من مجموعة تانية (زي الطلاب) بناءً على مفتاح مشترك.
وبيكون الناتج: Standard + مجموعة طلاب
تعريف الكائنات:
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public int StandardID { get; set; }
}
public class Standard
{
public int StandardID { get; set; }
public string StandardName { get; set; }
}
البيانات:
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"},
new Standard(){ StandardID = 4, StandardName = "Standard 4"}
};
List<Student> studentList = new List<Student>()
{
new Student() { StudentID = 1, StudentName = "John", StandardID = 1 },
new Student() { StudentID = 2, StudentName = "Moin", StandardID = 1 },
new Student() { StudentID = 3, StudentName = "Bill", StandardID = 2 },
new Student() { StudentID = 4, StudentName = "Ram", StandardID = 2 },
new Student() { StudentID = 5, StudentName = "Ron", StandardID = 3 }
};
Group Join باستخدام Query Syntax:
var groupJoinQuery = from std in standardList
join s in studentList
on std.StandardID equals s.StandardID into studentGroup
select new
{
StandardName = std.StandardName,
Students = studentGroup
};
Group Join باستخدام Method Syntax:
var groupJoinMethod = standardList
.GroupJoin(studentList,
std => std.StandardID,
s => s.StandardID,
(std, studentGroup) => new
{
StandardName = std.StandardName,
Students = studentGroup
});
عرض النتيجة:
foreach (var group in groupJoinMethod)
{
Console.WriteLine("Standard: " + group.StandardName);
foreach (var student in group.Students)
{
Console.WriteLine(" " + student.StudentName);
}
}
الناتج المتوقع:
Standard: Standard 1
John
Moin
Standard: Standard 2
Bill
Ram
Standard: Standard 3
Ron
Standard: Standard 4
(لا طلاب)
ملاحظات:
GroupJoin
مثالي لربط الكائنات اللي بينهم علاقة واحد إلى متعدد.- لو مفيش طلاب في Standard معين، المجموعة هتكون فاضية مش null.
- ممكن تستخدم
groupJoin
كخطوة في بناء تقارير معقدة أو صفحات عرض بيانات.
تعليقات
إرسال تعليق