05 December 2016

LINQ Sorguları 2

Daha önceki LINQ notlarımda LINQ konusuna giriş yapıp temel sorgulara yer vermiştim. Bu notlarımda da LINQ sorgularına devam edeceğim. Daha sonra da bir ORM aracı olarak LINQ to SQL konusunu inceleyeceğiz.

Bir önceki örneğimizde olduğu gibi oljemizi oluşturup üzerinde sorular çalıştıralım. ogrenciler ve adresler isimli iki objemiz olsun.

var ogrenciler = new[]{
 new {ID=1,Ad="sema",Soyad="akyilmaz",Sirket="Btp1"},
 new {ID=2,Ad="aynur",Soyad="can",Sirket="Btp2"},
 new {ID=3,Ad="esma",Soyad="altun",Sirket="Btp3"},
 new {ID=4,Ad="eda",Soyad="deniz",Sirket="Btp4"},
 new {ID=5,Ad="gunay",Soyad="bayram",Sirket="Btp5"},
 new {ID=6,Ad="ahmet",Soyad="ahmet",Sirket="Btp6"},
 };
 var adresler = new[]
 {
 new {Sirket="Btp1",Sehir="Moskova",Ulke="Rusya"},
 new {Sirket="Btp2",Sehir="Antalya",Ulke="Türkiye"},
 new {Sirket="Btp3",Sehir="Ankara",Ulke="Rusya"},
 new {Sirket="Btp4",Sehir="Antalya",Ulke="Türkiye"},
 new {Sirket="Btp5",Sehir="Moskova",Ulke="Rusya"},
 new {Sirket="Btp6",Sehir="Paris",Ulke="Fransa"},
 };

Select Sorgusu

var ogrenciAdlari = from o in ogrenciler
 select o.Ad;
 foreach (var item in ogrenciAdlari)
 {
 Console.WriteLine(item);
 }

Aynı işi extension metod kullanarak yapalım

ogrenciAdlari.ToList().ForEach(item => Console.WriteLine(item));
Method chain (Metod zinciri)
var ogrenciAdlari2 = from o in ogrenciler
 select new { o.Ad, o.Soyad };
 foreach (var item in ogrenciAdlari2)
 {
 //Console.WriteLine(item);
 //veya
 Console.WriteLine(string.Format("Ad: {0} Soyad: {1}", item.Ad,item.Soyad));
 }

Where Sorgusu

//Türkiye'deki şirketler
var ts = from u in adresler
 where string.Equals(u.Ulke, "Türkiye")
 select u.Sirket;
int[] rakamlar = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
 var sonuc = from n in rakamlar
 where n % 2 == 0
 select n;
foreach (var item in sonuc)
 {
 Console.WriteLine(item);
 }

Order By

var ulkeSirala = from u in adresler
 orderby u.Ulke
 select u.Ulke;
foreach (var item in ulkeSirala)
 {
 Console.WriteLine(item);
 }

Group By

var ulkeGrupla = from ug in adresler
 group ug by ug.Ulke;
 foreach (var ulke in ulkeGrupla)
 {
 Console.WriteLine("--------------------------");
 Console.WriteLine("Ülke: {0} ---> Şirket Sayısı: {1}", ulke.Key,ulke.Count());
 foreach (var u in ulke)
 {
 Console.WriteLine("\nŞirket Adı:{0}", u.Sirket);
 }
 }

Count

int ulkeSayisi = (from u in adresler
 select u.Ulke).Count();
 Console.WriteLine(ulkeSayisi);

Distinct

int tekrarsizUlkeSayisi = (from u in adresler
 select u.Ulke)
 .Distinct()
 .Count();
 Console.WriteLine(tekrarsizUlkeSayisi);

Join

var bilgiler = from a in adresler
 join o in ogrenciler
 on a.Sirket equals o.Sirket
 select new { o.Ad, o.Soyad, a.Ulke };
 foreach (var item in bilgiler)
 {
 Console.WriteLine(item);
 }