İlişkisel Generic Listler Join İşlemleri

Kodla Büyü

togius

Süper Üye
Süper Üye
Mesajlar
1,730
Sınıflarımız aşağıdaki gibi olduğunu düşünelim.
Kod:
public class Personeller
{
    public int PersonelId { get; set; }
    public string AdSoyad { get; set; }
    public string CepTel { get; set; }
    public string Email { get; set; }
    public int KurumdakiGorevId { get; set; }
    public int KurumId { get; set; }
    public int KidemYili { get; set; }
    public string Sifre { get; set; }
}


public class Kurumlar
{
    public int KurumId { get; set; }
    public string Kurum { get; set; }
}


public class KurumGorevleri
{
    public int GorevId { get; set; }
    public string Gorev { get; set; }
}

Bu sınıfları birbirleriyle ilişkilendirebilir ve gelen yapıları sql deki inner join benzeri hızlı bir şekilde birleştirebiliriz. Linq bize join ile güzel bir yöntem sunuyor.


Kod:
List<KurumGorevleri> KurumGorevleriListesi = veritabani_islemleri.SelectKurumGorevleri(-1);
        List<Kurumlar> KurumListesi = veritabani_islemleri.SelectKurumlar(-1);
        List<Personeller> PersonelListesi = veritabani_islemleri.SelectPersoneller(-1);

        var veriler = from p in PersonelListesi
                      join kl in KurumListesi on p.KurumId equals kl.KurumId
                      join kg in KurumGorevleriListesi on p.KurumdakiGorevId equals kg.GorevId
                      select new
                      {
                          PersonelId = p.PersonelId,
                          AdSoyad = p.AdSoyad,
                          CepTel = p.CepTel,
                          Email = p.Email,
                          KurumdakiGorevId = p.KurumdakiGorevId,
                          KurumId = p.KurumId,
                          KidemYili = p.KidemYili,
                          Sifre = p.Sifre,
                          Kurum = kl.Kurum,
                          Gorev = kg.Gorev
                      };

Herhangi bir data kontrolüne bunu bağlamamızda sorun değil gayet basit.
Kod:
Gridview1.DataSource = veriler;
Gridview1.DataBind();

İnşallah işinize yarar.
 
Teşekkürler hocam, bu konulara ne kadar uzak kaldığımı fark ettim sayenizde. :shock:
 
Geri
Üst