10 Nisan 2017 Pazartesi

Linq SelectMany Kullanımı

var Ogrenciler = OgrencileriGetir();
List Kulupler = KulupleriGetir();

var UyeOlunanKulupler = Ogrenciler.SelectMany(Ogrenci => Kulupler.Where(Kulup => Kulup.KayitNo == Ogrenci.Kulup),
                             (Ogrenci, Kulup) =>
                                                  new {
                                                       Ogrenci.Adi,
                                                       KulupAdi = Kulup.Adi
                                                  }
                             );

Console.WriteLine("Öğrenciler ve kulupleri :");

foreach (var Satir in UyeOlunanKulupler)
{
    Console.WriteLine("{0}, {1} kulübüne üye.", Satir.Adi, Satir.KulupAdi);
}
Console.ReadLine();


SelectMany yönteminin aldığı 2 parametreden birincisi, SelectMany uygulanan veri kaynağının (örneğimizde Ogrenciler ) hangi veri kaynağı ile hangi ortak alan üzerinden birleştirileceğini (örneğimizide Kulup.KayitNo  ve Ogrenci.Kulup ), ikincisi nelerin seçileceğini (örneğimizde öğrenci adı ve kulüp adı) belirler.



Bu örnekte new { Ogrenci.Adi, KulupAdi = Kulup.Adi } ifadesinde birinci özelliğin adı belirtilmemiştir. Yani isimsiz tip new { Adi = Ogrenci.Adi, KulupAdi = Kulup.Adi }  şeklinde yazılmamıştır. Böyle bir durumda özellik adı olarak seçilen özelliğin adı (örneğimizde Ogrenci.Adi bölümündeki Adi) kullanılacaktır.

Hiç yorum yok: