Bilgisayar

LINQ Nedir ? Nasıl Okunur ?

LINQ , yani Language Integrated Query . Okunuşu aynı “link” gibidir. Bir çok eğitim videolarındaki Türk eğitmenler maalesef yanlış telaffuz etmektedir. “lin-ku” diye okuyanların sayısı çok fazladır. Bunun en doğrusunu Google’da aratarak da bulabilirsiniz. “How to pronounce linq” diye arattığınızda, google amca sizlere aşağıdaki gibi bir sonuç verecektir.

Linq, Microsoft’un çıkardığı, bir sorgulama dilidir. Ancak burada sorguyu SQL Server’a değil, .net tabanlı yazdığımız yazılımlarda kullandığımız, Collection’lara atmaktayız. Yani diğer bir değişle, obje listelerine atmaktayız.

Bunun ne avantajı vardır ?

Mesela, elimizde bir Ogrenci.cs diye bir class’ımız olsun. Ve bundan örneklenmiş bir öğrenci listemiz olsun.

Öğrenci sınıfımız (class’ımız) ise şöyle olsun.

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

Daha sonra bir tane, içerisinde, Öğrenci tipinden, nesneler içeren bir Generic List oluşturalım

List<Ogrenci> list = new List<Ogrenci>();

Öğrenci listemiz oluştu.

Şimdi bunun içerisine bir kaç tane öğrenci ekleyelim.

list.Add(new Ogrenci { Id = 1, Ad = "Emre" });
list.Add(new Ogrenci { Id = 2, Ad = "Ahmet" });
list.Add(new Ogrenci { Id = 3, Ad = "Mehmet" });

bu şekilde listemizde 3 tane öğrenci eklemiş olduk. Farzedelim ki bu öğrenciler arasından ismi Mehmet olanının Id’sini ekrana bastırmak istiyoruz ? Eğer hayatımızda linq olmasaydı bunu nasıl yapardık ? Bir çok yolu olabilir.
Bu eski metotlardan bir tanesi foreach döngüsü ile iterate edip, if ile kontrol edip, duruma göre hareket etmektir.

foreach(Ogrenci ogr in list)
  {
     if(ogr.Ad=="Mehmet")
      {
        Console.WriteLine(ogr.Id);
      }
  }

Bir başka yaklaşım ise for döngüsüyle olabilir ? Burada da list’in uzunluğu kadar bir iterasyon yapabiliriz istersek.

for(int i=0;i<list.Count;i++)
{
    if(list[i].Ad=="Mehmet")
    {
        Console.WriteLine(list[i].Id);
    }
}

Örnekler ve çözüm şekilleri çoğaltılabilir. Ancak görüldüğü üzere, linq dışındaki her çözüm, bir döngü kurup, daha sonra içerisinde if cümleleri ile kontrol etmek üzerine kurulu.

Hayatımıza LINQ girdiği anda bu durum şöyle değişecekti :

Console.WriteLine((list.Find(ogr => ogr.Ad == "Mehmet") as Ogrenci).Id);

Gördüğünüz gibi tek satırda işi bitirebildik 🙂

Aslında tek satırda işi bitirebilmek için biraz da c# diline hakim olmak gerekiyor. Yukarıdaki komutun yapmış olduğu şey aslında sırasıyla şu :

list nesnesinin içine Find komutu ile bir sorgu gönderiyor. Aslında her sorgu, özünde bir nevi döngüdür diyebiliriz. Find komutu çalıştığında, liste içerisinde tek tek gez, her bir nesneyi “ogr” diye bir değişkene ata ve ogr‘nin Ad property‘si “Mehmet“‘e eşit olanı, Ogrenci tipine “cast” et ve bu cast edilmiş nesnenin, Id property‘sini al.

Bunu daha açık şekilde de yazabilirdik aslında.

Ogrenci ogrenci = list.Find(ogr => ogr.Ad == "Mehmet") as Ogrenci;
Console.WriteLine(ogrenci.Id);

Ya da “as” yerine, CAST ‘de kullanabilirdik..

Ogrenci ogrenci = (Ogrenci)list.Find(ogr => ogr.Ad == "Mehmet");
 Console.WriteLine(ogrenci.Id);

Linq’in hayatımıza kattığı kolaylığı, kabaca ne işe yaradığı hakkında bir nebze olsa bilgi edinebilysek ne mutlu bizlere. İlerleyen yazılarda daha detaylı işlemlere değineceğiz.

Takıldığınız noktalar olursa mutlaka yorum kısmına yazın, elimden geldiğince yardımcı olmaya çalışacağım.

Emre ÖZÇELİKEL

C#, .NET 7, MVC ve MAUI konularında öğrenmeye ve öğretmeye meraklı bir yazılım geliştiricidir. Kendi firması üzerinden, Türkiye'nin önde gelen firmalarına yazılım destek hizmetleri vermekle beraber, eğitim kurumlarında bu konularda yüz yüze eğitimler de vermektedir.

Recent Posts

Boşaltım Sistemi

Boşaltım sistemi vücutta homeostazın sağlanmasında çok önemli bir yere sahiptir.Böbrekler, üreterler ve mesaneden oluşan boşaltım…

10 saat ago

Atatürk ve Spor

Büyük Atatürk'ün ölümünü takip eden günlerde, o zamanlar yalnız Avrupa'nın değil, dünyanın en güçlü günlük…

22 saat ago

Atatürk’ün Hayatı

 Mustafa Kemal Atatürk 1881 yılında Selânik'te Kocakasım Mahallesi, Islâhhâne Caddesi'ndeki üç katlı pembe evde doğdu.…

1 gün ago

Özdeşlik

Bir şeyin başka bir şey değil de zorunlu olarak kendisi olması; bir şeyin kendisiyle bir…

2 gün ago

Uyurken Beynimiz Neler Yapıyor ?

Eğer bir insanın başına 'elektroensephalograf' (ezberlemeniz gerekmez!) adını taşıyan bir cihaz bağlarsanız, o insanın yaydığı…

2 gün ago

Stresi Yönetmek

Stres bağışıklık sisteminin ve genel direncin zayıflamasına neden olur. Duygusal dengeyi dengeleyen faktör ise sizin…

3 gün ago