YÜKLENİYOR...

LINQ ile Veri Sorgulama Temelleri

LINQ ile Veri Sorgulama Temelleri
C# dilinde veriyle çalışmak hemen her uygulamada karşımıza çıkar. Listeler, diziler, koleksiyonlar, veritabanı sonuçları… Bunlar üzerinde arama yapmak, filtrelemek, sıralamak ya da gruplamak çoğu zaman temel ihtiyaçlarımızdan biridir. Geleneksel foreach d

C# dilinde veriyle çalışmak hemen her uygulamada karşımıza çıkar. Listeler, diziler, koleksiyonlar, veritabanı sonuçları… Bunlar üzerinde arama yapmak, filtrelemek, sıralamak ya da gruplamak çoğu zaman temel ihtiyaçlarımızdan biridir. Geleneksel foreach döngüleri veya if kontrolleriyle bu işlemleri yapmak mümkün olsa da okunabilirlik ve verim açısından yetersiz kalabilir.

İşte bu noktada LINQ (Language Integrated Query), yani dile entegre sorgulama özelliği devreye girer. LINQ, C# ile SQL benzeri sorgular yazmanıza olanak tanır. Bu hem kodunuzu daha sade hale getirir, hem de güçlü bir sorgulama yeteneği kazandırır.

Bu yazıda LINQ’in temel sözdizimi, nasıl çalıştığı ve örneklerle koleksiyonlar üzerinde nasıl kullanıldığına değineceğiz.


LINQ Nedir?

LINQ (Language Integrated Query), C# 3.0 ile gelen ve farklı veri kaynakları üzerinde (koleksiyonlar, XML, SQL vb.) sorgulama yapmayı sağlayan bir teknolojidir. LINQ sayesinde hem nesne koleksiyonları hem de veri tabanı sonuçları üzerinde ortak bir sözdizimi ile işlem yapabilirsiniz.

LINQ iki temel şekilde yazılabilir:

  • Query Syntax (SQL'e benzer sözdizimi)

  • Method Syntax (Lambda ifadeleri ile yazılır)


Temel LINQ Örnekleri

1. Bir Koleksiyonu Filtreleme

List<string> isimler = new List<string> { "Ali", "Ayşe", "Mehmet", "Zeynep" };

// Query Syntax
var sonuc1 = from isim in isimler
             where isim.StartsWith("A")
             select isim;

// Method Syntax
var sonuc2 = isimler.Where(i => i.StartsWith("A")).ToList();

Burada, "A" harfiyle başlayan isimleri filtreledik. LINQ sayesinde hem daha kısa hem de daha anlaşılır kod elde ettik.


2. Nesne Koleksiyonu Üzerinde LINQ

public class Ogrenci
{
    public int Id { get; set; }
    public string Ad { get; set; }
    public int Not { get; set; }
}

List<Ogrenci> ogrenciler = new List<Ogrenci>
{
    new Ogrenci { Id = 1, Ad = "Ali", Not = 85 },
    new Ogrenci { Id = 2, Ad = "Ayşe", Not = 92 },
    new Ogrenci { Id = 3, Ad = "Mehmet", Not = 70 }
};

// 80 ve üzeri not alanları listeleyelim
var basariliOgrenciler = from o in ogrenciler
                         where o.Not >= 80
                         select o.Ad;

LINQ ile koleksiyonlar arasında SQL mantığında sorgulama yapılabilir. Bu hem nesne odaklı çalışmayı kolaylaştırır, hem de performansı artırır.


LINQ ile Gruplama ve Sıralama

Gruplama

var notGruplari = from o in ogrenciler
                  group o by o.Not >= 80 into gruplar
                  select new
                  {
                      BasariliMi = gruplar.Key,
                      Ogrenciler = gruplar.ToList()
                  };

Sıralama

var sirali = ogrenciler.OrderByDescending(o => o.Not);

Gruplama ve sıralama gibi işlemleri yazmak klasik yöntemlerle oldukça uzundur. LINQ bunu sadeleştirir.


Method Syntax Örneği

var ilkIki = ogrenciler
    .Where(o => o.Not >= 80)
    .OrderByDescending(o => o.Not)
    .Take(2)
    .Select(o => o.Ad);

Bu kod parçası, notu 80 ve üzeri olan ilk iki öğrenciyi not sırasına göre getirir. Görüldüğü gibi method syntax ile zincirleme işlemler daha rahat yazılabilir.


 

LINQ şu durumlarda oldukça etkilidir:

  • Koleksiyonlar üzerinde hızlı ve okunabilir sorgular yapmak

  • Veritabanından gelen IQueryable veriler üzerinde işlem yapmak

  • XML veya JSON gibi veri kaynaklarını sade sorgularla yönetmek

  • Kod tekrarını ve karmaşık döngü yapılarının önüne geçmek

Kısacası LINQ, C# geliştiricileri için güçlü ve esnek bir sorgulama aracıdır. Hem performansı hem okunabilirliği artırır. Uygulamanızda daha profesyonel veri işleme için LINQ kullanmayı öğrenmek büyük bir adımdır.