1-) C# - Linq - Listeleme (İlişkili Tablo)
HAZIR KOD
var notListe = from ort in db.TBLNOT
join ogr in db.TBLOGRENCI
on ort.OGRENCIID equals ogr.ID
join ders in db.TBLDERS
on ort.DERSID equals ders.ID
select new
{
Öğrenci = ogr.AD + " " + ogr.SOYAD,
Ders = ders.AD,
Sınav1 = ort.SINAV1,
Sınav2 = ort.SINAV2,
Ortalama = ort.ORTALAMA,
Durum = ort.DURUM == true ? "Geçti" : "Kaldı"
};
dataGridView1.DataSource = notListe.ToList();
KOD AÇIKLAMASI
Yeşil - Değişken
Kırmızı - Veritabındaki Tablo Adı (Değişken)
Mavi - Tablodaki Alan Adları ve Tablodan(Sınıftan) Türetilen Nesnenin Özellikleri (Değişken)
Turuncu - TextBox'ın Adı (Değişken)
Anonymous Type - Tablodan çekilen verilerin atandığı tip
var notListe = from notlar in db.TBLNOT
//from ile nerden getireceğimizi belirteceğimizi soyleriz.
//ogrenci ise bir değişken a,b yada x te olabilirdi.
//in ile neyden neyin icinden yani hangi tablodan getireceğimizi soyleriz.
join ogrenci in db.TBLOGRENCI
//join ile başka bir tabloyla bağlayacağımızı ve ilişkilendireceğimizi soyleriz.
//ogrenci ise yukarda yaptığımız gibi bir değişken a,b yada x te olabilirdi.
on notlar.OGRENCIID equals ogrenci.ID
//on ise ile nasıl bağlantı kuracağımızı ilişkilenidreceğimizi belirteceğimizi soyleriz
//Eğer bir ilişkilendirme varsa mutlaka nasıl ilişkilnedireceğimizi belirtmek zorundayız yani join varsa her zaman on da vardır.
//equals ile TBLNOT tablosundaki OGRENCIID eşittir yani ilişkilidir TBLOGRENCI tablosundaki ID ile deriz.
join ders in db.TBLDERS
on notlar.DERSID equals ders.ID
//İlk join ve on işlemi ile ilişkilendirme bittikten sonra yapılacaksa diğer ilişkilendirme yine aynı şekilde yapılır
select new
//select ile ilişkili tablolardan dan belirli alanları sececeğimizi soyleri new ile bunları tutman icin yeni bir adres belirleyeceğimizi soyleriz tıpkı sınıftan nesne uretirken yaptığımız gibi...
{
Öğrenci = ogrenci.AD + " " + ogrenci.SOYAD,
//Bu şekilde istenilen tablolardan istenilen property (ozellikler) secilerek birleştirilebilir
Ders = ders.AD,
Sınav1 = notlar.SINAV1,
Sınav2 = notlar.SINAV2,
Ortalama = notlar.ORTALAMA,
//Ortalamayı SQL Managerda bir Prosedür yazarak buldurdum ve sonucu tablodaki ORTALAMA bolumune yazdırdım.
Durum = notlar.DURUM == true ? "Geçti" : "Kaldı"
//Bu şekilde TBLNOTLAR tablosundaki durum eğer true ise sorgula diyoruz ? ile yapıyoruz bunu eğer true ise Geçti yaz true değilse Kaldı yaz diyoruz.
//Durumu SQL Managerda oluşturduğum Prosedür ile 50'den buyuk ve eşit ise true, 50'den küçük ise false dondurecek şekilde ayarladım.Kalma durumunu belirtiyor.
};
dataGridView1.DataSource = notListe.ToList();
//En son dataGrid'e yada gridView'in DataSource'sine yani veri kaynağına cağırdığımız verileri tutan değişken olan notListe'yi toList() metodu ile liste şeklinde getirir ve atarız.
NOT -->
//select new den sonra tablodan cağırdığımız belirli alanları Ders, Ortalama, Sınav1 gibi değişkenlere atamıştık bunlara Anonymous Type deniyor bazı durumlarda gerekiyor ve çağırdığımız alanlar bu type'leri adına gore geliyor.Yani OGRENCI'yi aldğımız satırda stunnun adı "Öğrenci" şeklinde oluyor.