Entity Framework -الـ Filtering, Paging and Sorting
Entity Framework Core - التصفية (Filtering) والتقسيم (Paging) والترتيب (Sorting)
في التطبيقات الكبيرة، يصبح من الضروري تصفية النتائج، ترتيبها، وتقسيمها إلى صفحات (Pagination) لتحسين الأداء وتجربة المستخدم.
---🔹 أولًا: التصفية (Filtering)
التصفية تعني جلب مجموعة جزئية من البيانات بناءً على شروط محددة باستخدام Where.
// جلب الطلاب الذين عمرهم بين 20 و30 سنة
var students = await dbContext.Students
.Where(s => s.Age >= 20 && s.Age <= 30)
.ToListAsync();
---
🔹 ثانيًا: الترتيب (Sorting)
يمكن ترتيب النتائج تصاعديًا أو تنازليًا باستخدام OrderBy وOrderByDescending.
// ترتيب الطلاب حسب الاسم تصاعديًا
var studentsOrdered = await dbContext.Students
.OrderBy(s => s.Name)
.ToListAsync();
// ترتيب الطلاب حسب العمر تنازليًا
var studentsOrderedDesc = await dbContext.Students
.OrderByDescending(s => s.Age)
.ToListAsync();
---
🔹 ثالثًا: التقسيم إلى صفحات (Paging)
عند وجود كمية كبيرة من البيانات، نستخدم Skip وTake لعرض جزء معين منها فقط.
// جلب الصفحة الثانية من الطلاب، 10 طلاب في كل صفحة
int pageNumber = 2;
int pageSize = 10;
var studentsPage = await dbContext.Students
.OrderBy(s => s.Name)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.ToListAsync();
---
🔹 شرح الكود:
- Where: لتصفية النتائج حسب شروط معينة.
- OrderBy / OrderByDescending: لترتيب النتائج.
- Skip: لتخطي عدد معين من السجلات (مثلاً سجلات الصفحة الأولى).
- Take: لجلب عدد معين من السجلات (مثلاً سجلات الصفحة الثانية فقط).
🔹 ملاحظات مهمة:
- ✅ من الأفضل دائمًا استخدام OrderBy قبل Skip وTake لضمان ترتيب صحيح للبيانات.
- ✅ استخدم Async Methods لتحسين الأداء وعدم تجميد الواجهة (UI).
✅ بالتصفية والفرز والتقسيم إلى صفحات، يمكنك تحسين أداء استعلاماتك وعرض بياناتك بطريقة أكثر احترافية.
تعليقات
إرسال تعليق