Sobes.tech
Junior — Middle

IEnumerable və IQueryable-ni necə ayırmaq və hər birini hansı hallarda istifadə etmək lazımdır?

sobes.tech Süni İntellekt

AI-dan cavab

IEnumerableIQueryable kolleksiyalarla işləmək üçün interfeyslərdir, lakin fərqli davranış və məqsədlərə malikdirlər:

  • IEnumerable<T> — yaddaşdakı kolleksiyaları keçmək üçün istifadə olunur. Məlumatlara sorğular dərhal icra olunur və bütün LINQ əməliyyatları müştəri tərəfində (yaddaşda) işlənir.

  • IQueryable<T> — IEnumerable-i genişləndirir və sorğuların ifadələrə çevrilməsinə imkan verir, məsələn, SQL sorğuları. Sorğunun icrası təxirə salınır, yəni onun keçilməsi vaxtına qədər (tələskən icra), və əməliyyatlar məlumat mənbəyində (məsələn, verilənlər bazası) həyata keçirilir.

Nə zaman istifadə etmək:

  • IEnumerable — məlumatlar artıq yaddaşda yüklənibsə və ya yerli kolleksiyalarla işləyirsinizsə.
  • IQueryable — uzaq mənbəyə (DB) sorğu qurmaq və seçimi optimallaşdırmaq, filtrləmə və sıralama serverdə həyata keçirmək istəyirsinizsə.

Nümunə:

IQueryable<User> usersQuery = dbContext.Users.Where(u => u.Age > 18);
// usersQuery üzərində keçərkən verilənlər bazası sorğusu formalaşır və icra olunur

IEnumerable<User> usersList = usersQuery.ToList();
// Məlumatlar yaddaşa yüklənir və növbəti əməliyyatlar yerli şəkildə həyata keçirilir