LINQ (Language Integrated Query)
Web Programlama 2 - Ünite 8: Modern Veri Sorgulama Mimarisi
Neden LINQ?
Geleneksel programlamada, her veri kaynağı (SQL, XML, Array) için farklı bir dil öğrenmek gerekir. LINQ, bu karmaşayı ortadan kaldırarak tüm veri kaynaklarına C# diliyle, tip güvenli (type-safe) bir şekilde erişmemizi sağlayan devrimsel bir teknolojidir.
- Standart: Tek söz dizimi, her kaynak.
- IntelliSense: Kod yazarken otomatik tamamlama.
- Hata Denetimi: Çalışma zamanı değil, derleme zamanı kontrolü.
Sorgu Yürütme Modelleri (Execution Modes)
LINQ sorgularının "ne zaman" çalıştığını anlamak hayati önem taşır. İki mod vardır:
A. Ertelenmiş Yürütme (Deferred)
Sorgu tanımlandığında çalışmaz. Veri istendiğinde (foreach) çalışır.
// Sorgu henüz çalışmadı!
sayilar[1] = 8; // Veriyi değiştirdik
foreach(var s in sorgu) // ŞİMDİ çalıştı
{ ... }
B. Anlık Yürütme (Immediate)
ToList(), Count() gibi metotlar sorguyu o an çalıştırır.
// Sorgu ÇALIŞTI ve bitti!
sayilar[1] = 8; // Veriyi değiştirdik
foreach(var s in liste)
{ ... }
Söz Dizimi: Query vs. Method
where k.Sayfa > 500
select k;
// Lambda: k (input) => (şart)
Her iki yöntem de arka planda aynı IL (Intermediate Language) koduna dönüşür.
Sık Kullanılan Operatörler
Where (Filtrele)
KoşulVeri kümesini belirli kriterlere göre süzer.
OrderBy (Sırala)
SıralamaA-Z veya 0-9 sıralar. Tersi için OrderByDescending.
Select (Seç/Dönüştür)
İzdüşümVerinin sadece belirli sütunlarını veya yeni bir formunu alır.
First vs FirstOrDefault
Kritik- First: Kayıt yoksa HATA fırlatır.
- FirstOrDefault: Kayıt yoksa NULL döner. (Önerilen)
Toplama (Aggregation)
MatematikMiktar Belirleyiciler
Boolean- Any(): Hiç kayıt var mı? (veya şarta uyan)
- All(): Hepsi şarta uyuyor mu?
- Contains(): Listede var mı?
Akademik Özet
LINQ, modern yazılım mimarisinde veri manipülasyonunun kalbidir. Ertelenmiş yürütme (Deferred Execution) performansı optimize ederken, Lambda ifadeleri ve Extension Method'lar kodun okunabilirliğini ve yazım hızını artırır. Bir yazılım mühendisi için LINQ operatörlerine hakim olmak, veri yapıları üzerinde cerrahi bir yetkinlik kazandırır.