Merhaba Arkadaslar,
Bir önceki makalemizde, Linq'in ne oldugunu, nerelerde kullanildigini anlatmistim.
Genel olarak baktigimizda, linq ile Linq to Entities, Linq to Objects, Linq to Sql vs düsünürsek, tüm kullanim alanlarinda sorgulamalar yapabiliriz ve bu isimizi çok kolaylastirir.
Ilk örnegimizi Linq to Objects ile yapalim.
Neydi Linq to Objects?
Bellek üzerinde sakladigimiz koleksiyonlar üzerinde sorgulama yapmamiza yariyordu. Yani diziler,degiskenler, koleksiyonlar,nesneler vs.
O zaman biz bir dizi olusturalim ve dizi içerisinde sorgulamalar yapalim.
int[] sayiDizisi = { 5, 4, 20, 600, 541 };//int türünden sayiDizisi adinda dizimizi tanimladik.
var sorgu = from sayilar in sayiDizisi select d;//Linq sorgulamalarinda kullanilan standart cümle yapisi (syntax).
/*Ado.Net ile : Select * from TabloAdi
*Linq ile : from TakmaAd in SorgulanacakTabloKoleksiyonvs.
*/
foreach (var item in sorgu)//foreach ile yukaridaki sorgumuzda kriter belirtiyorsak o kriterlere uygun kayitlar getirmesini, eger herhangi bir kriter belirtmediysek içerisindeki tüm sonuçlari teker teker getirmesini istiyoruz.
{
Console.WriteLine(item);
}
Yukaridaki birinci sorgumuz.
from: nereden
sayilar: takma ad, degistirebilirsiniz.
in : içinde
sayiDizisi: sorgulanacak tablo,koleksiyon vs.
select: seç.
Parça parça yazinca çok saçma oluyor anlamlari ama olsun :)
***** Linq sorgulamalarini var ile yapabiliriz, object ile yapamayiz.
Çünkü, var, IEnumerable arayüzünden miras almistir, GetEnumerator özelligine sahip bir degerdir ancak Object sinifi ayni özellige sahip olmadigindan herhangi bir siralama,sorgulama islemi yaptiramayiz.
Bütün degiskenler ve hatta class'lar Object sinifindan miras aliyor olsa dahi Object bu durumda kullanilamaz.
Linq'in standart syntax'i bu sekilde. Ama Lamba Expressions ile bu durum degisiyor. Ilerleyen makalelerde Lamba kullanimina da deginecegim. Linq ile istediginiz koleksiyon üzerinde ayni bu sekilde sorgulama yapabilirsiniz.
Yukarida kriterlerden bahsetmistik, simdi de kriterli bir sorgu yazalim:
int[] sayiDizisi = { 5, 4, 20, 600, 541 };
var sorgu = from sayilar in sayiDizisi where sayilar % 2 == 0 select sayilar;//Ado.Net sorgularinda oldugu gibi where kullanabiliyoruz. Bu sorgumuzda where kullanarak mod aldik ve sorgulamada yalnizca çift sayilari bize getirmesini istedik.
foreach (var item in sorgu)
{
Console.WriteLine(item);
}
Çalistirdigimizda, 4,20,600 degerleri ekrana geliyor.
Takildiginiz yerlerde yorum yazmaniz yeterli arkadaslar, kod'la kalin...