Ne arayalım?

ARAMIZA KATILIN

BİZE ULAŞIN

Adres:

E-posta:

host/bin/bilisimlife.dll

iletisim@bilisimlife.net




 
Rserit
Developer
       
 1029  
 278

IEnumerable<T> ve IQueryable<T> Arasındaki Fark

Selamlar,
Her ikisi de birbiriyle aynı gözüküp, aslında farklı operasyon işlemleri gerçekleşen iki yapıyı ele alalım.
Aralarındaki fark, IQueryable Linq yapısının çalışmasını sağlayan arabirim olmasıdır. Yani, sorgularınızı bir IQueryable üzerinde daha da yoğunlaştırırsanız, bu sorgu mümkünse veritabanında yürütülür. IEnumerable durumunda, LINQ-to-object olacaktır, yani orijinal sorgu ile eşleşen tüm nesnelerin veritabanından belleğe yüklenmesi gerekir.

Örnek kod:
IQueryable Urun = ....;
var StoktakiUrunler = Urun.Where (c => c.Stok > 0);

Bu kod sadece stoktaki olan ürünleri getirmek için SQL'i çalıştıracaktır.
Diğer yandan, aşağıdaki kod, veritabanındaki özgün sorguyu yürütecek ve ardından bellekte olmayan stoktaki ürünleri filtreleyecektir.

IEnumerable Urun = ...;
var StoktakiUrunler =Urun.Where (c => c.Stok > 0);

Bu oldukça önemli bir farktır ve IQueryable üzerinde çalışmak birçok durumda veritabanından çok fazla satır döndürmenizi sağlar.

Başka bir örnek, sayfalama yapıyorsunuz diyelim. IQueryable'da Take and Skip'i kullanırsanız, yalnızca istenen satır sayısını elde edersiniz. Ama bunu IEnumerable üzerinde yapmak, tüm satırlarınızın belleğe yüklenmesine neden olur.

Umarım anlaşılmıştır,
Recep.

Developer.