LINQ Ogreniyorum Serisi 01
- Sevdanur GENC

- Feb 5, 2012
- 2 min read
Makale icerisinde LinQ sorgu yapilarinin yapisindan bahsedicez. Ileriki makalelerde de ogrenilmis olan bu sorgu yapilariyla birlikte uygulamalar yaparak LinQ sorgu yapisini pekistirmis olacagiz. Normal sorgu cumlelerinde bilindigi uzere Verinin kaynagindan haberli bir sekilde verilere ulasilir ve o veriler uzerinde sorgulari calistirip en sonunda kullanicilara sonuclari yonlendirecektir. Cogu veri kaynagi IEnumerable<T> arayuz generic tiplerini desteklemektedir. Bu sebepten oturu veri coklugunu bu sekilde generic arayuzler kullanarak sonuclara ulasabiliriz. LinQ sorgu yapilari da SQL sorgu yapilarinda oldugu gibi Select, Where, OrderBy, GroupBy ifadelerini kullanabiliyor, ayni zamanda da Count, Sum gibi aritmatik fonksiyonlarida linq cumle icerisinde barindirabiliyor. SQL'de ki kelimelerle benzerlik gosterirler fakat bastada dedigimiz gibi soz dizilimleri biraz farklidir. Soyle ki ;
Yani asagidaki gibi bir kalip kullanilmaktadir ;
var = from in
where
orderby
select kolon1, kolon2....
Dizilerden topladigimiz verileri linq sorgu yapisina soktuktan ve de bu sorgu yapisinda islettirdikten geriye donecek olan bilgileri kullanicilara listelettirmek icin ForEach yapisini kullanabiliriz. Sorguyu saklayan degisken ForEach yapisi verilerin icerisinde saklanilmasi icin sorgunun calistirilmasi ile birlikte senkronizasyon bir sekilde olaylar gerceklesmektedir. Bu sekilde ertelenmis bir listeleme sekline Deffered Execution ismi verilmektedir. Yani kisacasi ; hem sorgu cumleciklerinin aninda calistirilir, hemde tum sonuclarin birer birer generic list yapilarinda saklanilmaktadir.
Tum bu Anlattiklarimizi Kucuk bir uygulama inceleyelim...
Uygulama ;
Visual Studio' da olusturacagimiz yeni bir ConsoleApplication'ininda bulunan Program.Cs kod sayfasina asagidaki kodlari yazdigimizda yapmis oldugumuz islemleri sirasiyla soyledir ;
- Oncelikle SayiDizisi Adinda bir dizi olusturuyor ve icerisine dizide bulunacak sayilari belirtmis oluyoruz. KosulluSayilar adi altinda bir lokal degisken tanimlamis oluyorum, ve LinQ sorgu cumlemin sonucunu icerisine aktaricak sekilde devam ediyorum. SayiDizisi icerisinde ki tum sayilari Sayi degiskenine aktararak Where ile belirttigimiz kosulu her okudugunda kosulu saglayan sayi degiskenini foreach liste yapisinda saklayarak bir sonraki verinin kosulu saglayip saglamayacagini kontrol ediyor. Sorgu sonucu olarak kosulu saglayan tum sayilari ekrana yazdiriyor.
Program.Cs Kaynak Kodlar ;
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int[] SayiDizisi = new int<10>
{1,2,3,4,5,6,7,8,9,10};
var KosulluSayilar = from Sayi in SayiDizisi
where (Sayi) > 5
select Sayi;
foreach (int Sayi in KosulluSayilar)
{
Console.WriteLine(Sayi);
}
}
}
}
Ekran Ciktisi ;
Bu makalede LinQ sorgu yapilarindan bahsetmis olduk, artik sorgu cumlelerimizi kullanmadan once yapmamiz gerken islemler hakkinda bilgiler vermeye baslayabiliriz. LINQ Ogreniyorum Serisi 02 icin ; https://sevdanurgenc.com/archives/1631
Comments