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