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

SQL Injection neden dolayi olusur ve Nasil Korunulur?

SQL Injection suphe goturmez ki web uygulamalarinda yayginlik / hasar orani en yuksek aciktir. Muhtemelen…

10 saat ago

Anayasa Mahkemesi Nedir ?

9 Temmuz 1961 gunu halkoyuna sunularak kabul edilmis olan yeni Anayasanin 145 inci maddesi geregince…

22 saat ago

Kati Yakitli Roketler

Kati Yakitli Roketler lk kat yaktl roketler Çinliler tarafndan .S.VII. yüzylda yapld ve güç kayna …

1 gün ago

Transducer Olarak Dizayn Edilmesi

Yuk hucreleri imal edildikten sonra kuvvet, yuklenme,basinc, tork ve agirlik olcumunde kullanilmak uzere uygun metal…

2 gün ago

Amnesya.com Nedir ?

Merhaba arkadaslar, Amnesya dedigimiz sey suan dunyayi kasip kavuran online oyunlardan bir tanesi. Web tabanli…

2 gün ago

Yuk Hucresi imalati

Yuk hucresinin yerlestirilecegi yuzey  alkol ve benzeri sivilarla temizlenir ve kurutulur.  10x10 mm boyutundaki “kare…

3 gün ago