B.B.F.Ş. - LinQ Uygulamaları - 7

Kodla Büyü

togius

Süper Üye
Süper Üye
Mesajlar
1,737
Bırakın Bu Fani Şeyleri ....

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Linq_Temel_Sorgulama
{
public class Kisi
{
private int KisiID;
private string Ad;
private string Soyad;

public int kisiID
{
get { return KisiID; }
set { KisiID = value; }
}
public string ad
{
get { return Ad; }
set { Ad = value; }
}
public string soyad
{
get { return Soyad; }
set { Soyad = value; }
}
public Kisi(int KisiID, string Ad, string Soyad)
{
//Değerler özelliklere gönderiliyor
this.kisiID = KisiID;
this.ad = Ad;
this.soyad = Soyad;
}
}

public class Telefon
{
private int telefonID;
private int kisiID;
private string alanKodu;
private string telefonNo;
private TelefonTipleri tip;

public int TelefonID {
get { return telefonID; }
set { telefonID = value; }
}
public int KisiID {
get { return kisiID; }
set { kisiID = value; }
}
public string AlanKodu {
get { return alanKodu; }
set { alanKodu = value; }
}
public string TelefonNo {
get { return telefonNo; }
set { telefonNo = value; }
}
public TelefonTipleri Tip {
get { return tip; }
set { tip = value; }
}
public Telefon(int telefonID, int kisiID, string alanKodu, string telefonNo, TelefonTipleri tip)
{
this.TelefonID = telefonID;
this.KisiID = kisiID;
this.AlanKodu = alanKodu;
this.TelefonNo = telefonNo;
this.Tip = tip;
}
}
//Telefon Tiplerinini Ayarlıyoruz.
public enum TelefonTipleri
{
Ev,
Is,
Cep,
Yazlik
}


class Program
{
static void Main(string[] args)
{
#region
List<Kisi> kisiler = new List<Kisi>();
kisiler.Add(new Kisi(1,"Tolga","ŞAHİN"));
kisiler.Add(new Kisi(2,"Zübeyde","ŞAHİN"));
kisiler.Add(new Kisi(3,"Mehmet Ege","ŞAHİN"));
kisiler.Add(new Kisi(4,"Elif Helin","ŞAHİN"));
#endregion

#region
List<Telefon> telefonlar = new List<Telefon>();
telefonlar.Add(new Telefon(1, 1, "266", "4561200", TelefonTipleri.Is));
telefonlar.Add(new Telefon(2,1,"266","2246779",TelefonTipleri.Ev));
telefonlar.Add(new Telefon(3,2,"505","5673211",TelefonTipleri.Cep));
telefonlar.Add(new Telefon(4, 1, "505", "5561200", TelefonTipleri.Cep));
telefonlar.Add(new Telefon(5, 3, "266", "1246779", TelefonTipleri.Ev));
telefonlar.Add(new Telefon(6, 3, "505", "4673211", TelefonTipleri.Cep));
telefonlar.Add(new Telefon(7, 4, "505", "2673211", TelefonTipleri.Cep));
#endregion

//Tüm Kişi Listesini Ekrana Linq ile yazıdırıcaz
Console.WriteLine("--------Tüm Kişileri Gösterir------\n");
var snc = from k in kisiler
select k;
foreach (var obj in snc)
{
string str = "";
str = "Kişi Numarası = " + obj.kisiID + ", ";
str += "Kişi Adı = " + obj.ad + ", ";
str += "Kişi Soyadı = " + obj.soyad + ", ";
Console.WriteLine(str);
}

Console.WriteLine("-----İlk N kaydı Getirir--------\n");
//Şimdi isterseniz ilk 2 kişiyi sorgumuzda getirelim
var sncSecilen = (from k in kisiler
select k).Take(2);
foreach (var obj in sncSecilen)
{
string str = "";
str = "Kişi Numarası = " + obj.kisiID + ", ";
str += "Kişi Adı = " + obj.ad + ", ";
str += "Kişi Soyadı = " + obj.soyad + ", ";
Console.WriteLine(str);
}
Console.WriteLine("-------Belirtilen Kayıtlar Arasını Getirir------\n");
//Kişilerden 2 ile 3 ü getiren sorgu
var sncSecilen2 = (from k in kisiler
select k).Skip(1).Take(2);
foreach (var obj in sncSecilen2)
{
string str = "";
str = "Kişi Numarası = " + obj.kisiID + ", ";
str += "Kişi Adı = " + obj.ad + ", ";
str += "Kişi Soyadı = " + obj.soyad + ", ";
Console.WriteLine(str);
}
Console.WriteLine("------n. Kaydı Getirir------\n");
//Kişilerden sadece 3. sırayı getiren sorugu
var sncSecilen3 = (from k in kisiler
select k).Skip(1).First();

string strTek = "";
strTek = "Kişi Numarası = " + sncSecilen3.kisiID + ", ";
strTek += "Kişi Adı = " + sncSecilen3.ad + ", ";
strTek += "Kişi Soyadı = " + sncSecilen3.soyad + ", ";
Console.WriteLine(strTek);

//şimdi isterseniz Anonymous Type Özelliklerine Bakalım
Console.WriteLine("------Kayıtları Birleştir------\n");
var sncSecilen4 = from k in kisiler
select new { tamAd = k.ad + " " + k.soyad };
foreach (var obj in sncSecilen4)
Console.WriteLine("Kişi = {0}", obj.tamAd);

//LinQ da kayıtları gruplamak için ise ( tüm Kişileri soyadlarının
// baş harfine göre gruplucaz)
Console.WriteLine("------Kayıtları Gruplamak İçin------\n");
var sncSecilen5 = from k in kisiler
group k by k.soyad[0] into yeniData
select new
{
BasHarf=yeniData.Key,
Tekrar=yeniData.Count()
};

foreach (var obj in sncSecilen5)
Console.WriteLine(obj.BasHarf + " " + obj.Tekrar);

//şimdi LinQ kullanarak iki tabloyu birleştireceğiz.
Console.WriteLine("------Tabloları Birleştiriyoruz------\n");
var sncSecilen6 = from t in telefonlar
join k in kisiler
on t.KisiID equals k.kisiID
select new
{
tamAd = k.ad + " " + k.soyad,
telefonNo = t.TelefonNo,
tipi = t.Tip
};
foreach (var obj in sncSecilen6)
Console.WriteLine(obj.tamAd + "\t\t" + obj.telefonNo + "\t\t" + obj.tipi);


//yine bir tablo birleştirme örneği göreceğiz
// telefonları olmayanları yok dicek.
Console.WriteLine("------Tabloları Birleştiriyoruz2------\n");
var sncSecilen7 = from k in kisiler
join t in telefonlar
on k.kisiID equals t.KisiID
into denemeTablosu
from t in denemeTablosu.DefaultIfEmpty()
select new
{
tamAd = k.ad + " " + k.soyad,
telefonNo = (t.TelefonNo == null) ? "yok" : (t.AlanKodu + "-" + t.TelefonNo),
tipi = (t.Tip == null) ? "" : t.Tip.ToString()
};
foreach (var obj in sncSecilen7)
Console.WriteLine(obj.tamAd + "\t\t" + obj.telefonNo + "\t\t" + obj.tipi);

//Kişinin kaç tane telefonu olduğunu gösteren sorgu
//kullanılan yapılar select, from, Anonymous Type, left outer join, group ... by
var sncSecilen8 = from k in kisiler
join t in telefonlar
on k.kisiID equals t.KisiID
into denemeTablosu
from t in denemeTablosu.DefaultIfEmpty()
group t by new
{
tamAd = k.ad + " " + k.soyad,
kisiID = (t.KisiID == null) ? 0 : t.KisiID
} into yeniData
select new
{
tamAd = yeniData.Key.tamAd,
telefonSayisi = (yeniData.Key.kisiID == 0) ? "0" : yeniData.Count().ToString()
};
foreach (var obj in sncSecilen8)
Console.WriteLine(obj.tamAd + "\t\t" + obj.telefonSayisi);


}
}
}
 
Geri
Üst