Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

Cevap Geçmişi

«« Soruya geri dön
13.04.16 22:11
IEnumerable LINQ for Objects için, yani hafızadaki List , dizi vs. sorgulaması sonucunda elde edilecek değerler için kullanılıyor. IEnumerable bellekteti veya belleğe aldığı veriler üzerinden seçim yapar. System.Collections isim alanında yer alır. IQueryable ise LINQ for Database için yani veritabanından sorgulanan değerler için kullanılıyor. Bu eğer veritabanı bağlantısı varsa veritabanı üzerinde SQL sorgusu yaparak değerleri seçiyor. Tabi eğer hedef veritabanı ise. IQueryable   System.Linq isim alanında yer alır. IEnumerable ile veritabanı bağlantısı olan bir nesne üzerinden sorgu isterseniz tüm liste hafızaya alınacak ve daha sonra bu liste üzerinden filtrelerinize göre seçme işlemi yapılacaktır. IQueryable ile LINQ sorgusu yapıldığında ise  veritabanı üzerinde çalıştırılacak sorguda tüm filtreler yer alalacak ve sadece istenen kayıtlar yüklenecektir. IEnumerable hafızadaki koleksiyonlar için idealdir. IQueryable hafıza dışındaki (veritabanı, servis vs.) koleksiyonlar için idealdir. IQueryable fazladan CreateQuery ve Execute yöntemlerine sahiptir. Bu şekilde doğrudan özel sorguları yazıp çalıştırabiliriz. IEnumerable bunu desteklemez. IQueryable ve IEnumerable 'nin her ikisi de ertelenmiş çalıştırma (Deffered Execution) kullanır. Ancak IQueryable   ertelenmiş çalıştırma işlemine benzer bir işlem olan tembel yükleme (Lazy Loading) kullanır. Yani veritabanından kayıtları siz  kullanmaya başlayana kadar çağırmaz. Bu da sayfalama gibi bir çok işlemde çok faydalıdır. Kaynak: http://www.dotnet-tricks.com/Tutorial/linq/I8SY160612-IEnumerable-VS-IQueryable.html
Ekleyen: cevapsitesi
Değiştiren: cevapsitesi
Cevap olarak seçen: canora
13.04.16 19:10
IEnumerable LINQ for Objects için, yani hafızadaki List , dizi vs. sorgulaması sonucunda elde edilecek değerler için kullanılıyor. IEnumerable bellekteti veya belleğe aldığı veriler üzerinden seçim yapar. System.Collections isim alanında yer alır. IQueryable ise LINQ for Database için yani veritabanından sorgulanan değerler için kullanılıyor. Bu eğer veritabanı bağlantısı varsa veritabanı üzerinde SQL sorgusu yaparak değerleri seçiyor. Tabi eğer hedef veritabanı ise. IQueryable   System.Linq isim alanında yer alır. IEnumerable ile veritabanı bağlantısı olan bir nesne üzerinden sorgu isterseniz tüm liste hafızaya alınacak ve daha sonra bu liste üzerinden filtrelerinize göre seçme işlemi yapılacaktır. IQueryable ile LINQ sorgusu yapıldığında ise  veritabanı üzerinde çalıştırılacak sorguda tüm filtreler yer alalacak ve sadece istenen kayıtlar yüklenecektir. IEnumerable hafızadaki koleksiyonlar için idealdir. IQueryable hafıza dışındaki (veritabanı, servis vs.) koleksiyonlar için idealdir. IQueryable fazladan CreateQuery ve Execute yöntemlerine sahiptir. Bu şekilde doğrudan özel sorguları yazıp çalıştırabiliriz. IEnumerable bunu desteklemez. IQueryable ve IEnumerable 'nin her ikisi de ertelenmiş çalıştırma (Deffered Execution) kullanır. Ancak IQueryable   ertelenmiş çalıştırma işlemine benzer bir işlem olan tembel yükleme (Lazy Loading) kullanır. Yani veritabanından kayıtları siz  kullanmaya başlayana kadar çağırmaz. Bu da sayfalama gibi bir çok işlemde çok faydalıdır.
Ekleyen: cevapsitesi

En fazla 3 eski durum gösterilir.