Dönen IEnumerable<T> vs IQueryable<T>
IQueryable<T> vs IEnumerable<T> dönen arasındaki fark nedir?
IQueryable<Customer> custs = from c in db.Customers
where c.City == "<City>"
select c;
IEnumerable<Customer> custs = from c in db.Customers
where c.City == "<City>"
select c;
Hem yürütme ertelenmiş olacak ve ne zaman biri diğerinin üstüne tercih edilmelidir?
CEVAP
Evet, her ikisi de ertelenmiş yürütme verecektir.
Fark IQueryable<T> SQL SERİ (SERİ.-izin veren arabirim.-herhangi bir şey çalışmak. Ayrıca bir IQueryable üzerinde sorgu rafine&; T> lt eğer öyleyse; bu sorgu mümkünse veritabanında çalıştırılacak.
IEnumerable<T> durumda, SERİ-nesne, bütün nesneler, orijinal sorgu eşleşen veritabanından belleğe yüklenecek olacak anlamı olacak.
Kod:
IQueryable<Customer> custs = ...;
// Later on...
var goldCustomers = custs.Where(c => c.IsGold);
Bu kod sadece seçin altın müşteriler için SQL yürütülür. Aşağıdaki kodu, öte yandan veritabanında özgün sorgu, sonra hafızasında olmayan altın müşteriler filtreleyerek yürütülür:
IEnumerable<Customer> custs = ...;
// Later on...
var goldCustomers = custs.Where(c => c.IsGold);
Bu önemli bir fark var oldukça, ve IQueryable<T> çalışan; birçok durumda veritabanından çok fazla satır dönen kurtaracak. Başka bir örnek yapıyor belleği: Eğer kullandığınız Al ve Atla IQueryable, olur, sadece satır sayısı istenen; bunu bir IEnumerable<T> neden tüm satırlar için yüklü bellek.

IQueryable<T> ve IEnumerable<...
Ne'In IQueryable ve IEnumerable a...
Liste, IList, IEnumerable, IQueryable,...
BaÅŸlatma IEnumerable<dize> C#...
Ilist vs Varlıkları Koleksiyon için IE...