C# ile LINQ ve Lambda İfadeleri - 1

   
   L
anguage INtegrated Query yani “dile entegre olmuş sorgulama” olarak bilinen LINQ programcıya veri tabanı ortamlarında kullanılan SQL diline benzer şekilde veri sorgulama imkanı veren bir .NET veri sorgulama yöntemidir. C# 3.0 ve .NET Framework 3.5 aracılığıyla tanıştığımız LINQ ilk çıktığı günden bu yana sıklıkla kullanılmaktadır. Gelecek sayılarımızda derinlemesine inceleyeceğimiz son yılların en popüler konularından biri olan Entity Framework kavramının da temel unsurlarından birini oluşturmasından ötürü .NET programcıları tarafından mutlak suretle iyi anlaşılması ve özümsenmesi gereken bir konudur.

 
 
  LINQ ile .NET nesneleri içeren liste ve benzeri yapıları, daha doğrusu IEnumerable veya IEnumerable<> ara-yüzlerini destekleyen yapıları, arzu edilen alanlar üzerinden filtreleyebilir, liste içindeki nesneleri dinamik bir şekilde başka yapı- lara çevirerek seçebilir, liste elemanları üzerinde toplam, ortalama, maksimum, minimum vb. hesaplamalar yapabilir ve değişik tipte yapıları barındıran farklı liste bazlı yapıları ortak alanlar üzerinden birbirine bağlama/ilişkilendirme gibi işlemleri gerçekleştirebiliriz.
 
LINQ cümleleri iki değişik şekilde yazılabilirler:
- Sorgu yöntemi
- Metot-lambda ifadeleri (lambda expressions) yöntemi
 
Bu iki yöntemi yakından incelemeye başlamadan önce örneklerimizde veri kaynağı olarak kullanmak üzere aşağıdaki listeyi tanımlayalım:
 
List<int> liste = new List<int>{1, 2, 3, 4, 5, 6, 7};
 
Şimdi bu listeden sorgu yöntemini kullanarak 3 rakamından büyük değerleri birer string olarak seçelim.

 
IEnumerable<string> sonuç = from x in liste //veri kaynağı ve değişken tanımı
                            where x > 3  //koşul ile filtreleme
                            orderby x descending  //sırala (büyükten küçüğe)
                            select x.ToString();   //veri seçimi

NOT: LINQ ve ilgili yapıları kullanabilmek için projelerimizde System.Core.dll sınıf kütüphanesine referans ekleyerek System.Linq alan-adına erişebiliyor olmamız gerekir.
 
Yukarıdaki örnekte de görüldüğü gibi sorgu yöntemiyle yazılan LINQ cümleleri aşağıdaki taslakta yazılırlar:


IEnumerable<sonuçTip> sonuç =  from değişkenAdı in veriKaynağı 
                               where koşulİfadesi
                               orderby sıralamaİfadesi descending / ascending
                               select seçimİfadesi; 

Yukarıdaki formatı irdeleyelim: 

 değişkenAdı :Bizim seçeceğimiz herhangi bir değişken adı. Bu değişken adı foreach döngülerinde tanımlanan yineleme değişkeni gibi düşünebilir ve diğer ifadelerde liste elemanlarına referans yapma imkanı tanır. 

 koşulİfadesi : true ya da false döndürecek koşul.  

 sıralama İfadesi : tip kısıtlaması olmayan ve sıralamada kullanılacak bir değer döndürecek ifade.

 seçim İfadesi : sonuç listesinde tutulacak sonuçTitipindeki nesneleri belirleyenifade.

 
     Bu tanımlar arasında sanırız en önemli kavram seçimİfadesi ve sonuçTip arasındaki ilişkidir. LINQ cümlelerinde atamanın sol tarafında ne olacağı seçimİfadesi’ne bağlıdır, veri kaynağına değil. Örneğimizde veri kaynağımız int değer- lerden oluşan bir liste olduğu halde x.ToString() ile yaptığımız seçim bize IEnumerable<string> tipinde bir sonuç vermektedir.
           
Şimdi metot-lambda ifadeleri yöntemiyle yukarıdaki LINQ cümlesine işlev- sel olarak eşdeğer olan aşağıdaki cümleyi yazalım:

 
IEnumerable<string> sonuç = liste.Where(x => x > 3)
                            .OrderByDescending(x => x)
                            .Select(x => x.ToString());

Yukarıda yazdığımız LINQ cümleleri (sorgu ve metot-lambda yöntemleri) liste değişkeninden x > 3 koşulunu sağlayan elemanları tespit eder, bunları büyük- ten küçüğe doğru sıralar ve birer string olarak seçerek oluşan yeni listeyi sonuç değişkenine aktarır.
 
sonuç değişkenindeki değeri görüntüleyecek olursak sonuç şu olacaktır:
"7", "6", "5", "4"



Kaynak: F5 Dergisi


23.4.2014  kategori
4361 Okunma  kategori
Makaleden alıntı yaparken lütfen link veriniz...!
kategori  C# ,LINQ ,Lambda
kategori  Linq
Hiç Yorum Yapılmadı.Hadi ilk yorumu sen yap!

Yorum Yaz


Site Bilgi

Sitede paylaşılan yazılar kaynak gösterilmek şartı ile heryerde paylaşılabilir.Unutmayalım! Bilgi paylaştıkça çoğalır.Herhangi bir soru,sorun,görüş yada öneriniz için bana iletişim kısmındaki formu doldurarak ya da
ekremesrefkilinc [at] gmail.com e-posta
adresinden ulaşabilirsiniz.
Tasarım ve Kodlama : Ekrem Eşref KILINÇ @2012 - 2019
Sql _Net Jquery Xml
Yukarı Çık