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).

✅ بالتصفية والفرز والتقسيم إلى صفحات، يمكنك تحسين أداء استعلاماتك وعرض بياناتك بطريقة أكثر احترافية.

تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

Entity Framework - مقدمة عن Entity Framework