LINQ GroupBy
LINQ GroupBy
دالة GroupBy
في LINQ تُستخدم لتجميع البيانات حسب مفتاح معين (زي مثلاً فرع الطالب Branch)، وبتشتغل زي GROUP BY
في SQL.
تعريف الكلاس:
public class Student
{
public int StudentID { get; set; }
public string Name { get; set; }
public string Branch { get; set; }
}
مصدر البيانات:
List<Student> studentList = new List<Student>()
{
new Student() { StudentID = 1, Name = "John", Branch = "CSE" },
new Student() { StudentID = 2, Name = "Steve", Branch = "CSE" },
new Student() { StudentID = 3, Name = "Bill", Branch = "ECE" },
new Student() { StudentID = 4, Name = "Ram", Branch = "EEE" },
new Student() { StudentID = 5, Name = "Ron", Branch = "CSE" },
new Student() { StudentID = 6, Name = "Chris", Branch = "ECE" },
new Student() { StudentID = 7, Name = "Rob", Branch = "EEE" }
};
GroupBy باستخدام Method Syntax:
var GroupByBranch = studentList.GroupBy(s => s.Branch);
foreach (var group in GroupByBranch)
{
Console.WriteLine(group.Key + " - " + group.Count());
foreach (var student in group)
{
Console.WriteLine(" " + student.Name);
}
}
GroupBy باستخدام Query Syntax:
var GroupByBranch = from student in studentList
group student by student.Branch;
foreach (var group in GroupByBranch)
{
Console.WriteLine(group.Key + " - " + group.Count());
foreach (var student in group)
{
Console.WriteLine(" " + student.Name);
}
}
GroupBy + ترتيب حسب الفرع:
var GroupByBranch = studentList
.GroupBy(s => s.Branch)
.OrderBy(g => g.Key);
GroupBy + فلترة حسب عدد العناصر:
var GroupByBranch = studentList
.GroupBy(s => s.Branch)
.Where(g => g.Count() > 2);
المخرجات:
CSE - 3
John
Steve
Ron
ECE - 2
Bill
Chris
EEE - 2
Ram
Rob
ملاحظات مهمة:
- النتيجة من
GroupBy
بتكون من نوعIGrouping<TKey, TElement>
. - كل مجموعة فيها مفتاح (Key) يمثل قيمة التجميع، والعناصر اللي بتقع تحته.
- تقدر تطبّق عمليات تانية زي
Select
أوOrderBy
على النتائج.
تعليقات
إرسال تعليق