🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Talha TOKATLIOGLU / C# - LINQ / Listeleme (İlişkili Tablo)

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.

 

 

 2021 Mart 14 Pazar
 506