Dev Arksoft
  • Arksoft Developer Network
  • Ağustos 2023
    • Angularda DOM (Document Object Model) Manipülasyonu
    • Angular’da Routing
    • Representational State Transfer (REST)
    • .Net Framework için Local NugetPackage
    • Agile Nedir?
  • Temmuz 2023
    • Angular HTTP Interceptors
    • Angularda Promise ve Observable
    • Mongo DB Kullanımı
  • Haziran 2023
    • Angular Validators
  • Mayıs 2023
    • Docker Uzerine Redis Kurulumu ve .Net Core ile Redise Erişim
  • Nisan 2023
    • Angular 14 Componentler Arası İletişim
  • Şubat 2023
    • JMeter ile Performans Testi
  • Ocak 2023
    • Windows Giriş Ekranında C# Form Açmak
  • Temmuz 2022
    • Regular Expressions
  • Haziran 2022
    • RSA Şifreleme
    • AutoMapper Kullanımı
    • Permutasyon ve Kombinasyon
    • Generic Repository Pattern
    • Levenshtein Algoritması
    • HTML 5’e Giriş
    • Graph Yapılar
  • Mayıs 2022
    • IQueryable IEnumerable Farklar
    • Sıralama Algoritmaları
  • Şubat 2022
    • ADFS Custom 2FA Integration
    • Reacta Giriş ve Reactın Temel Prensipleri
    • TypeScript Kullanımı
    • Serialization Kullanımı
    • Log4Net Kullanımı
    • Collections Yapıları
    • Windows Service Projesini Debug Etme ve Harici Exe Çalıştırma
    • Culture ve DateTime Kullanımı
    • Reflection Kullanımı
    • Steganografi Teknikleri
    • ElasticSearch Kullanımı
    • SWAGGER ve JWT TOKEN BASED WEBAPI Kullanımı
    • LINQ Komutları Kullanımı
    • Image Processing İşlemleri Kullanımı
Powered by GitBook
On this page
  1. Mayıs 2022

IQueryable IEnumerable Farklar

Husamettin Elalmis

IQueryable IEnumerable Farklar

Merhaba arkadaşlar, bu yazıda sizlere IQueryable ile IEnumerable arasındaki farklılıklardan bahsecedeğim.

IEnumerable

  • Liste üzerinde iterasyon yapmamızı sağlar

  • Memory üzerinde muhafaza edilir, memory üzerinde sorgulama yapar

  • GetEnumerator interfaceini otomatik olarak kullanarak foreach içerisinde dönmemizi sağlar

  • System.Collection namespaceinden türer

IQueryable

  • Uzak veri kaynağından veriyi çeker (database, webservice vb.)

  • Verileri sorgulamak için işlevsellik sağlar

  • System.Linq namespaceinden türer

  • IEnumerable interfacesinden implement edilmiştir

  • IEnumerabledeki tüm özelliklere sahiptir

IEnumerable ve IQueryable Farklılıkları

  • IEnumerable tüm veriyi alıp memoryde tutar, sorgulama işlemlerini memory üzerinde yapar.

  • IQueryable ise queryi oluşturarak doğrudan veritabanı üzerinden sorgulama işlemi yapar.

  • Milyonlarca kayıt üzerinde sorgulama işlemi yapılacak ise IQueryable kullanılmalıdır. IEnumerablea göre daha hızlı sorgulama işlemi yapar.

  • IEnumerable memorydeki kolleksiyonlar için idealdir.

  • IQueryable memory dışındaki (veritabanı, servis vb.) koleksiyonlar için idealdir.

  • IQueryable fazladan, IQueryProvider altında var olan CreateQuery ve Execute yöntemlerine sahiptir. Bu sayede doğrudan özel sorgular(expressionlar) yazıp çalıştırılabilir. IEnumerable bunu desteklemez.

  • IEnumerable lazy loading özelliğini desteklemez, IQueryable lazy loading özelliğini destekler.

  • LazyLoading nesneye ihtiyaç duyulduğu zaman veri kaynağından yükleme yapar (pagination)

IQueryable Üzerinde Predicate Kullanmak

  • Dynamic query oluşturmak için kullanılır

var keywords=new List<string>(){ "Test1","Test2" };

var predicate = PredicateBuilder.False<t_Users>();

foreach (var key in keywords)

{

predicate = predicate.Or (a => a.Text.Contains (key));

}

var query = context. t_Users.AsQueryable().Where(predicate);

IQueryable Üzerinde Predicate Filter Kullanmak

  • Parametre olarak lambda expression geçilmesini sağlar

Public IQuerayle<t_Users> GetAll(IQueryable<t_Users> list, Expression<Func<string, bool>> filter)

{

return list.Where(filter);

}

Sonuç

  • Bu dokumanda IQueryable ve IEnumerabler farklılıklarını görmüş olduk

  • IQueryable database seviyesinde daha etkin kullanılabildiğini gördük

Saygılarımla,

Hüsamettin ELALMIŞ – 29.05.2022

husamettin.elalmis@arksoft.com.tr

PreviousGraph YapılarNextSıralama Algoritmaları

Last updated 2 years ago