Language 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çTip tipindeki 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
6280 Okunma
Makaleden alıntı yaparken lütfen link veriniz...!
Makale Linki
C# ,LINQ ,Lambda
Linq
Hiç Yorum Yapılmadı.Hadi ilk yorumu sen yap!
Yorum Yaz
Sizde Yorumunuzu Yazın Katkıda Bulunun!
Ad-Soyad
:
E-posta Adresi
:
Web Sitesi
:
Yorum
:
Kategoriler
Gunluk (8)
Yazılım (7)
Müzik Kutusu (6)
Ders Notları (14)
Linux (2)
C (1)
Çeşitli (2)
Linq (2)
En Popüler Konular
Görsel Programlama - II Örnek Uygulamalar (Vize) (29659)
Görsel Programlama - I Dersi Ders Notları (C#) (22302)
Veri Tabanı Yönetim Sistemleri - I Ders Notları ( Vize ) (16273)
Veri Tabanı- II T- Sql Ders Notları (14777)
Web Projesi Yönetimi Ders Notları (13881)
Bağlantılar
Ağlasun Myo
Ahmed Önal
ArchLinux
Hayri Koçmarlar
Kozayurdu
Manjaro-tr
Mehmet Akif Ersoy Üniversitesi
Pardus
Pisi Linux-Özgürlük Şimdi Başladı
Diğer Sitelerden
USB Hata Ayıklama nedir?
Muhtemelen adını zaman zaman duyduğunuz, Android cihazlarda karşımıza çıkan "USB Hata Ayıklama" (USB Debugging) seçeneği nedir, tam olarak ne işe yarıyor? "USB Hata Ayıklama" nasıl açılır, gerçekten gerekli mi?
Sanal araziye servet döktüler!
Metaverse'e bir adım daha: Kanadalı bir yatırım firması, dijital (sanal) bir arazi satın almak için küçük bir serveti, gözünü kırpmadan ortaya döktü...
Nvidia ve AMD'ye "hodri meydan"
Intel, AMD ve NVIDIA ile mücadele etmek için her yıl yeni ekran kartları çıkartmak konusunda oldukça ciddi görünüyor...
ASUS Rapture GT-AX6000 duyuruldu
Gelecekten gelmiş gibi görünen tasarıma, olağanüstü performansa, esnek kablolu ağ yapılandırma seçeneklerine ve üç katmanlı oyun hızlandırma özelliğine sahip bu güçlü WiFi 6 oyuncu router'ı oyuncuları zafere taşımaya hazır.
Etiket Bulutu
programlama | Ders | Görsel | Notları | çalışma | Veri | Tabanı | Dersi | C# | Örnek | Nostalji | Csharp | Web | İnternet | Programcılığı | soruları | 2013 | Final | Vize | C | LINQ | Lambda | İfade | Expressions | Cengiz | Özkan | Uyandım | Sabah | İle | Derin |
Son Konular
Derin Kökler - Mut Yörükleri Karşı Dağlara Çıkasım Var
Cengiz Özkan - Uyandım Sabah İle (Urfa Türküsü)
C# ile LINQ ve Lambda İfadeleri - 2
C# ile LINQ ve Lambda İfadeleri - 1
Bilgisayarın Doğru Kullanımı
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