LINQ Nedir? Koleksiyonlar Üzerinde SQL Tadında Sorgular Yazma

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

C# LINQ Rehberi: Koleksiyonlar Üzerinde SQL Tadında Sorgular​


LINQ, farklı veri kaynaklarından (listeler, diziler, XML veya veritabanı) veri çekmeyi, filtrelemeyi ve sıralamayı standart bir hale getiren güçlü bir sözdizimidir. "Kodun içindeki SQL" olarak da adlandırılır.



1. Neden LINQ Kullanmalıyız?​


Klasik yöntemle 10 satırda yapacağınız bir işlemi LINQ ile tek satırda halledebilirsiniz.

Geleneksel Yöntem (Foreach):
C#:
List<int> sayilar = new List<int> { 5, 12, 8, 20, 3, 15 };
List<int> buyukSayilar = new List<int>();

foreach (int s in sayilar)
{
if (s > 10) buyukSayilar.Add(s);
}

LINQ Yöntemi:
C#:
var buyukSayilar = sayilar.Where(s => s > 10).ToList();


  • []Okunabilirlik: Kodun ne yaptığını bir bakışta anlarsınız.
    []Hata Payı Düşüktür: Döngü yönetimiyle uğraşmazsınız.
  • Tip Güvenliği: Derleme zamanında hataları yakalar.



2. LINQ Yazım Türleri​


LINQ iki farklı şekilde yazılabilir. Hangisini seçeceğiniz tamamen kişisel tercihinize veya projenin standartlarına bağlıdır.

A) Method Syntax (Lambda İfadeleri)​

En popüler ve modern yöntemdir. Metotları zincirleme (chaining) şeklinde kullanırsınız.
C#:
var sonuc = liste.Where(x => x.Ad.StartsWith("A")).OrderBy(x => x.Id);

B) Query Syntax (Sorgu Sözdizimi)​

SQL'e çok benzer. Karmaşık join işlemlerinde daha okunaklı olabilir.
C#:
var sonuc = from x in liste
where x.Ad.StartsWith("A")
orderby x.Id
select x;



3. En Çok Kullanılan LINQ Operatörleri​


Günlük hayatta en sık karşılaşacağınız operatörler şunlardır:


  • []Where: Koşula göre filtreleme yapar.
    []Select: Veriyi dönüştürür (Örneğin sadece isimleri çekmek).
    []OrderBy / OrderByDescending: A'dan Z'ye veya Z'den A'ye sıralar.
    []First / FirstOrDefault: İlk elemanı getirir (Bulamazsa hata verir veya null döner).
    []Any: Listede koşula uyan en az bir eleman var mı diye bakar (bool döner).
    []Sum, Min, Max, Average: Matematiksel hesaplamalar yapar.

C#:
var urunler = new List<Urun> { ... };

// Fiyatı 100'den büyük olanları pahalıdan ucuza sırala
var filtreliUrunler = urunler.Where(u => u.Fiyat > 100)
.OrderByDescending(u => u.Fiyat);

// Sadece ürün isimlerini içeren bir string listesi oluştur
var isimler = urunler.Select(u => u.UrunAdi).ToList();



4. Ertelenmiş Çalışma (Deferred Execution)​


LINQ'nun en ilginç özelliği budur. Siz bir LINQ sorgusu yazdığınızda o an çalışmaz. Ne zaman ki veriyi bir foreach içine alırsınız veya .ToList() / .ToArray() dersiniz, işte o zaman sorgu gerçek zamanlı olarak çalıştırılır. Bu özellik, büyük veri setlerinde performans avantajı sağlar.



Sonuç​


LINQ, modern C# geliştiriciliğinin omurgasıdır. Koleksiyonları yönetmeyi zahmetten kurtarıp bir keyfe dönüştürür. Özellikle Entity Framework gibi veritabanı kütüphaneleriyle birleştiğinde, kod yazma hızınızı inanılmaz bir seviyeye çıkarır.
 
Geri
Üst