30.03.2020
5.00 / 2 oy

C# ve LINQ Kullanımına Giriş

LINQ (Language Integrated Query) MySQL'e oldukça benzer ancak MySql veritabanları ile çalışırken LINQ koleksiyonlar ile çalışır. C# programlama dili konusunda oldukça kapsamlı bir yazı hazırlamıştım (C# Programlama Dili Hakkında Her Şey) ama İleri C# konularını eklemeye zamanım yetmemişti. Bugün LINQ'e giriş ve örnekler ile bu çalışmaya da başlamış olalım.

LINQ ile yazılan sorguları üç adımda düşünebiliriz:

1. Kaynağı almak

2. Sorguyu (Query) yazmak

3. Sorguyu çalıştırmak

 

Veritabanı ile Select sorguları yazanlara LINQ sorguları başlangıçta ters gelir çünkü Syntax'ı veritabanı sorgularının aşağı yukarı tam tersidir. Temel bir LINQ sorgusu şu şekilde yazılır.

1. Kaynağın belirtilmesi: from ... in ...

2. Şartların belirtilmesi: where ...

3. Filtelenmiş çıktıyı almak: select ...

 

C# ve Dizi İçerisinde LINQ Sorguları Yapmak

Tamsayılardan oluşan bir dizi tanımlayalım ve LINQ sorguları ile dizi içerisindeki elemanları filtreleyerek yazdıralım.

int[] sayilar = { 25, 33, 1, 962, 8, 254, 25, 41, 99, 3 };

 

Örnek 1: sayilar dizisinde 2'ye kalansız olarak bölünebilen sayıları (çift sayıları) LINQ ile seçerek yazdırın.

var ciftSayilar = from sayi in sayilar
                  where sayi % 2 == 0
                  select sayi;

Console.WriteLine(string.Join(", ", ciftSayilar)); //962, 8, 254

 

Örnek 2: 2'den büyük ve 10'dan küçük sayıları LINQ ile seçerek yazdırın.

var sayilar2ile10 = from sayi in sayilar
                    where (sayi > 2) && (sayi < 10)
                    select sayi;

Console.WriteLine(string.Join(", ", sayilar2ile10)); //8,3

 

LINQ içerisinde birden çok şart belirtildiğinde where ifadeleri çoğaltılarak da yazım sağlanabilir. Üstteki kod ile aşağıdaki çift where'li kod aynı işlevi görmektedir. Kullanıcı istediği seçimi yapabilir.

var sayilar5ile10Alternatif = from sayi in sayilar
                              where sayi > 2
                              where sayi < 10
                              select sayi;

Console.WriteLine(string.Join(", ", sayilar5ile10Alternatif)); //8,3

 

Örnek 3: sayılar dizisindeki tamsayılardan 2 ile 10 arasındaki değerleri seçerek artan sırada yazdırın.

Not: orderby ifadesi ile sıralanmak istenen alan seçilebilir. Varsayılan (default) sıralama seçeneği artan (ascending) olduğu için yazılması şart değildir. Azalan sırada seçim yapılası istenirse de descending anahtar kelimesi yazılmalıdır. İlerleyen örneklerde de göreceğimiz gibi birden çok alana göre de sıralama yapmak mümkündür.

var sayilar5ile10Sirali = from sayi in sayilar
                          where sayi > 2
                          where sayi < 10
                          orderby sayi //ascending
                          select sayi;

Console.WriteLine(string.Join(", ", sayilar5ile10Sirali)); //3,8

 

Şimdi de string'lerden oluşan bir dizi tanımlayalım ve örnekleri inceleyelim.

string[] takimlar = { "Galatasaray", "Fenerbahçe", "Beşiktaş", "Trabzonspor", "Bursaspor", "Cizrespor" };

Örnek 4: Futbol takımlarından oluşan takimlar dizisi içerisinde içinde a harfi geçen takımları LINQ ile bularak yazdırın.

var aHarfliTakimlar = from takim in takimlar
                      where takim.Contains("a")
                      select takim;

Console.WriteLine(string.Join(", ", aHarfliTakimlar)); 
//Galatasaray, Fenerbahçe, Besiktas, Trabzonspor, Bursaspor

 

Örnek 5: takimlar dizisi içindeki string elemanlardan içinde a harfi olanları ve (aynı anda) 9 karakter uzunluğunda olanları LINQ ile seçerek listeleyin.

    var aHarfli9KarakterliTakimlar = from takim in takimlar
                                     where takim.Contains("a") && takim.Length.Equals(9)
                                     select takim;

    Console.WriteLine(string.Join(", ", aHarfli9KarakterliTakimlar)); 
    //Bursaspor
C# ve LINQ Kullanımına Giriş
Bu makalenin telif hakkı ve tüm sorumlulukları yazara ait olup, şikayetler için lütfen bizimle iletişime geçiniz.
URL:
Etiketler:

Bu makale 265 kez okundu

30.03.2020 tarihinde yazıldı
Reitix

Yorumlar

  • Bu makaleye henüz hiç yorum yazılmamış. İlk yorumu yazan siz olabilirsiniz.

Bu yazıya siz de yorum yapabilirsiniz

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.