Sobes.tech
Junior — Middle

IEnumerable ile IQueryable nasıl ayırt edilir ve her biri hangi durumlarda kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

IEnumerable ve IQueryable koleksiyonlarla çalışmak için kullanılan arayüzlerdir, ancak farklı davranışlara ve amaçlara sahiptirler:

  • IEnumerable<T> — bellek içindeki koleksiyonları dolaşmak için kullanılır. Veri sorguları hemen yürütülür ve tüm LINQ işlemleri istemci tarafında (bellekte) işlenir.

  • IQueryable<T> — IEnumerable'i genişletir ve sorguların ifadeye dönüştürülmesine izin verir, örneğin SQL sorguları gibi. Sorgu yürütme, dolaşma anına kadar ertelenir (tembel yürütme) ve işlemler veri kaynağı tarafında (örneğin, veritabanı) gerçekleştirilir.

Ne zaman kullanmalı:

  • IEnumerable — veriler zaten bellekte yüklüyse veya yerel koleksiyonlarla çalışılıyorsa.
  • IQueryable — uzak bir kaynağa (DB) sorgu oluşturmak ve filtreleme ile sıralamayı sunucuda yapmak için optimize etmek gerekiyorsa.

Örnek:

IQueryable<User> usersQuery = dbContext.Users.Where(u => u.Age > 18);
// usersQuery dolaşılırken veritabanı sorgusu oluşturulur ve yürütülür

IEnumerable<User> usersList = usersQuery.ToList();
// Veriler belleğe yüklenir ve sonraki işlemler yerel olarak yapılır