20.06.16 21:18
LINQ - Yansıtma (Projection) - Select Kullanım Örnekleri
Bu makalede kullanılan  veri kaynağını görmek için tıklayın . Basit Select Kullanımı 1 LINQ sorgularında çoğunlukla bitiş 
olarak görülen SELECT cümleciği ile o anda sayılan eleman bildirilirse 
bu eleman seçilir. Ancak aşağıdaki örnekteki gibi oluşturulacak yeni 
listede kullanılmak üzere elemanın kendisi değil bir özelliği de 
seçilebilir ve yeni liste (örneğimizde OgrenciSoyadlari) bu değerlerden 
oluşur. İleride göreceğimiz gibi SELECT bazen çok farklı bir isimsiz 
sınıf oluşturup onu da seçebilir. Bu örnek öğrenci bilgilerini içeren bir veri kaynağından öğrencilerin soyadlarını seçer. var Ogrenciler = OgrencileriGetir(); var OgrenciSoyadlari =     from Ogrenci in Ogrenciler     select Ogrenci.Soyadi; Console.WriteLine("Öğrencilerin soyadları :"); foreach (var Soyad in OgrenciSoyadlari) {     Console.WriteLine(Soyad); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : 1. Sınıftaki Başarılı öğrenciler... Oran, Kenan Erkanlı, Erhan Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); var OgrenciSoyadlari = Ogrenciler.Select(Ogrenci => Ogrenci.Soyadi); Console.WriteLine("Öğrencilerin soyadları :"); foreach (var Soyad in OgrenciSoyadlari) {     Console.WriteLine(Soyad); } Console.ReadLine(); Basit Select Kullanımı 2 Bu örnek, bir tamsayılar dizisindeki elemanların 1 fazlalarını seçer. int[] Sayilar = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var SayilarArtiBir = from Sayi in Sayilar                      select Sayi + 1; Console.WriteLine("Sayılar + 1:"); foreach (var i in SayilarArtiBir) {     Console.WriteLine(i); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Sayılar + 1: 6 5 2 4 10 9 7 8 3 1 Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: int[] Sayilar = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var SayilarArtiBir = Sayilar.Select(Sayi => Sayi + 1); Console.WriteLine("Sayılar + 1:"); foreach (var i in SayilarArtiBir) {     Console.WriteLine(i); } Console.ReadLine(); Select Dönüştürme (Transformation) Bu örnek öğrenci bilgilerini içeren bir veri kaynağından ve öğrenci kuluplerinin bilgilerini içeren ikinci bir veri kaynağından öğrencilerin adlarını ve kulüplerin adlarını seçerek öğrencilerin adları ve üye oldukları kulüplerin adlarından yeni bir liste oluşturur. Öğrenciler veri kaynağındaki kayıtlarda öğrenci kulüpleri, kulüp veri kaynağındaki kulübün sıra numarası ve aynı zamanda kayıt numarası olan bir numara ile belirlenmiştir. var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var OgrencilerVeKulupleri = from Ogrenci in Ogrenciler                             select Ogrenci.Adi + ": " + Kulupler[Ogrenci.Kulup].Adi; Console.WriteLine("Öğrencilerin üye olduğu kulüpler :"); foreach (var Satir in OgrencilerVeKulupleri) {     Console.WriteLine(Satir); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Öğrencilerin üye olduğu kulüpler : Tuncay: Gezi Jale: Tiyatro Tekin: Tiyatro Mesut: Tiyatro Veli: Müzik Ahmet: Müzik Fatma: Tiyatro Mehmet: Gezi Hale: Tiyatro Ayşe: Tiyatro Cevdet: Müzik Nuri: Müzik Kenan: Gezi Lale: Gezi Erhan: Tiyatro Erhan: Tiyatro Erhan: Tiyatro Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var OgrencilerVeKulupleri = Ogrenciler.Select(Ogrenci => Ogrenci.Adi + ": " + Kulupler[Ogrenci.Kulup].Adi); Console.WriteLine("Öğrencilerin üye olduğu kulüpler :"); foreach (var Satir in OgrencilerVeKulupleri) {     Console.WriteLine(Satir); } Console.ReadLine(); Select ve isimsiz Tip (Anonymous Types) Kullanımı 1 Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki öğrenci ad ve soyadlarından yeni bir isimsiz tip oluşturarak seçer. var Ogrenciler = OgrencileriGetir(); var BuyukHarfIsimler = from Ogrenci in Ogrenciler                        select new { Ad = Ogrenci.Adi.ToUpper(),                                     Soyad = Ogrenci.Soyadi.ToUpper() }; Console.WriteLine("Büyük harflerle öğrenci isimleri :"); foreach (var BuyukHarfIsim in BuyukHarfIsimler) {     Console.WriteLine("{0} {1}", BuyukHarfIsim.Ad, BuyukHarfIsim.Soyad); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır: Büyük harflerle öğrenci isimleri : TUNCAY ÇAĞRI JALE İKİNCİ TEKİN UĞURLU MESUT BAHTİYAR VELİ CANLI AHMET GEÇE FATMA TEYZE MEHMET EMRE HALE BİRİNCİ AYŞE HANIM CEVDET DÖĞER NURİ BABAYİĞİT KENAN ORAN LALE ÜÇÜNCÜ ERHAN ERKANLI ERHAN FİDAN ERHAN ÇELİK Daha önceki örneklerimizde görüldüğü gibi, foreach döngüsü içinde döngü sırasında seçilecek elemanın tipini bildirmek için var kulandık. Var ifadesi kolaylık olsun diye, elemanın tipi ile uğraşmamak için kullanıldı. Var ile tanımlamak yerine elemanın tipi de verilebilirdi. Örneğin  Basit Where Örneği 1 'de kullandığımız örneği (özellikle  foreach  bölümününe dikkat edin) var ifadelerini çıkarıp aşağıdaki gibi de yazabilirdik. int[] Rakamlar = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; IEnumerable<int> KucukRakamlar = from Rakam in Rakamlar                                  where Rakam < 5                                  select Rakam; Console.WriteLine("5'den küçük rakamlar..."); foreach (int Rakam in KucukRakamlar) {     Console.WriteLine(Rakam); } Console.ReadLine(); Anonim tiplerde ise tipin bir adı olmadığından mecburen  var  kullanırız. Anonim tiplerin isimleri derleme zamanında derleyici tarafından belirlenir. Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); var BuyukHarfIsimler =     Ogrenciler.Select(Ogrenci => new { Ad = Ogrenci.Adi.ToUpper(),                                        Soyad = Ogrenci.Soyadi.ToUpper() }); Console.WriteLine("Büyük harflerle öğrenci isimleri :"); foreach (var BuyukHarfIsim in BuyukHarfIsimler) {     Console.WriteLine("{0} {1}", BuyukHarfIsim.Ad, BuyukHarfIsim.Soyad); } Console.ReadLine(); Select ve isimsiz Tip (Anonymous Types) Kullanımı 2 Bu örnek öğrenci bilgilerini içeren bir veri kaynağı ve öğrenci kulüpleri bilgilerini içeren ikinci bir veri kaynağından öğrenci adları ve üye oldukları kulüplerin adlarını kullanarak daha önceki örnekten bir parça daha karmaşık bir isimsiz tip oluşturarak seçer. var Ogrenciler = OgrencileriGetir(); List<KulupKaydi> Kulupler = KulupleriGetir(); var OgrencilerVeKulupleri =     Ogrenciler.Select(Ogrenci =>                                  new                                  {                                      Adi = Ogrenci.Adi,                                      Kulubu = Kulupler[Ogrenci.Kulup].Adi,                                      TiyatroMu = Ogrenci.Kulup == 1 ? "Evet" : "Hayır"                                  }); Console.WriteLine("Öğrenciler ve kulüpleri:"); foreach (var Satir in OgrencilerVeKulupleri) {     Console.WriteLine("Adı : {0}, Kulübü : {1}, Tiyatro Kulübünde : {2}",                       Satir.Adi,                       Satir.Kulubu,                       Satir.TiyatroMu); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Öğrenciler ve kulüpleri: Adı : Tuncay, Kulübü : Gezi, Tiyatro Kulübünde : Hayır Adı : Jale, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Tekin, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Mesut, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Veli, Kulübü : Müzik, Tiyatro Kulübünde : Hayır Adı : Ahmet, Kulübü : Müzik, Tiyatro Kulübünde : Hayır Adı : Fatma, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Mehmet, Kulübü : Gezi, Tiyatro Kulübünde : Hayır Adı : Hale, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Ayşe, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Cevdet, Kulübü : Müzik, Tiyatro Kulübünde : Hayır Adı : Nuri, Kulübü : Müzik, Tiyatro Kulübünde : Hayır Adı : Kenan, Kulübü : Gezi, Tiyatro Kulübünde : Hayır Adı : Lale, Kulübü : Gezi, Tiyatro Kulübünde : Hayır Adı : Erhan, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Erhan, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Erhan, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var OgrencilerVeKulupleri =     Ogrenciler.Select(Ogrenci =>                                  new                                  {                                      Adi = Ogrenci.Adi,                                      Kulubu = Kulupler[Ogrenci.Kulup].Adi,                                      TiyatroMu = Ogrenci.Kulup == 1 ? "Evet" : "Hayır"                                  }); Console.WriteLine("Öğrenciler ve kulüpleri:"); foreach (var Satir in OgrencilerVeKulupleri) {     Console.WriteLine("Adı : {0}, Kulübü : {1}, Tiyatro Kulübünde : {2}",                       Satir.Adi,                       Satir.Kulubu,                       Satir.TiyatroMu); } Console.ReadLine(); Select ve İsimsiz Tip (Anonymous Types) Kullanımı 3 Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki öğrenci kayıtlarından öğrenci adı, sınıfı ve başarı durumunu özelliklerinden yeni bir isimsiz tip oluşturur ve seçer. Daha sonra bir foreach döngüsü ile çıktıya yazar. var Ogrenciler = OgrencileriGetir(); var OgrenciOzetBilgileri = from Ogrenci in Ogrenciler                            select new                            {                                Ogrenci.Adi,                                Ogrenci.Sinif,                                BasariliMi = Ogrenci.Basarili                            }; Console.WriteLine("Öğrenci başarı durumları :"); foreach (var OzetBilgi in OgrenciOzetBilgileri) {     Console.WriteLine("{0}, {1}. sınıfta ve {2}.",                       OzetBilgi.Adi,                       OzetBilgi.Sinif,                       OzetBilgi.BasariliMi ? "başarılı" : "başarısız"); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Öğrenci başarı durumları : Tuncay, 4. sınıfta ve başarılı. Jale, 3. sınıfta ve başarılı. Tekin, 1. sınıfta ve başarısız. Mesut, 4. sınıfta ve başarısız. Veli, 4. sınıfta ve başarısız. Ahmet, 2. sınıfta ve başarılı. Fatma, 3. sınıfta ve başarılı. Mehmet, 4. sınıfta ve başarılı. Hale, 2. sınıfta ve başarısız. Ayşe, 2. sınıfta ve başarılı. Cevdet, 3. sınıfta ve başarısız. Nuri, 2. sınıfta ve başarılı. Kenan, 1. sınıfta ve başarılı. Lale, 3. sınıfta ve başarısız. Erhan, 1. sınıfta ve başarılı. Erhan, 2. sınıfta ve başarılı. Erhan, 3. sınıfta ve başarılı. Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); var OgrenciOzetBilgileri =     Ogrenciler.Select(Ogrenci =>                                  new                                 {                                     Ogrenci.Adi,                                     Ogrenci.Sinif,                                     BasariliMi = Ogrenci.Basarili                                 }); Console.WriteLine("Öğrenci başarı durumları :"); foreach (var OzetBilgi in OgrenciOzetBilgileri) {     Console.WriteLine("{0}, {1}. sınıfta ve {2}.",                       OzetBilgi.Adi,                       OzetBilgi.Sinif,                       OzetBilgi.BasariliMi ? "başarılı" : "başarısız"); } Console.ReadLine(); Dizinli / indeksli (Indexed) Select Kullanımı Select yönteminin 2. kullanım şeklinde, yöntem o anda bulunduğu eleman ile elemanın 0 tabanlı sıra numarasını (index) Lambda İfadesi olarak yazılabilecek bir isimsiz fonksiyona gönderir. Bu isimsiz fonksiyonda elemanın kensini ve sıra numarası ile ilgili işlemleri yaparız. Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki öğrenci kayıtlarından öğrencinin listedeki sırası, numarası, adı ve soyadı verilerinden yeni bir isimsiz tip oluşturur ve seçer. Daha sonra bir foreach döngüsü ile çıktıya yazar. var Ogrenciler = OgrencileriGetir(); var OgrenciListesi = Ogrenciler.Select((Ogrenci, Index) => new { Sirasi = Index + 1,                                                                  Ogrenci.No,                                                                  Ogrenci.Adi,                                                                  Ogrenci.Soyadi }); Console.WriteLine("Öğrenci listesi :"); foreach (var ListeSatiri in OgrenciListesi) {     Console.WriteLine("{0}- {1} {2}  {3}",                       ListeSatiri.Sirasi,                       ListeSatiri.No,                       ListeSatiri.Adi,                       ListeSatiri.Soyadi); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Öğrenci listesi : 1- 2 Tuncay  Çağrı 2- 4 Jale  İkinci 3- 7 Tekin  Uğurlu 4- 8 Mesut  Bahtiyar 5- 12 Veli  Canlı 6- 6 Ahmet  Geçe 7- 15 Fatma  Teyze 8- 14 Mehmet  Emre 9- 3 Hale  Birinci 10- 13 Ayşe  Hanım 11- 11 Cevdet  Döğer 12- 1 Nuri  Babayiğit 13- 5 Kenan  Oran 14- 9 Lale  Üçüncü 15- 10 Erhan  Erkanlı 16- 16 Erhan  Fidan 17- 17 Erhan  Çelik Dizinli SELECT yöntemi  Func<T1, T2, TResult>(T1 arg1, T2 arg2)   delegesi ile temsil edilen ve Lambda İfadesi şeklinde yazdığımız bir isimsiz fonksiyon kullanır. Bu isimsiz fonksiyona 2 parametre geçer. 1. parametre o anda sayılan elemanın kendisi, 2. parametre olarak da elemanın sırası 0 tabanlı olarak (ilk elemanın numarası 0) döndürülür. Biz de elemanın kendisini ve sırasını kullanarak isimsiz fonksiyon içinde işlemler gerçekleştirebiliriz. Şimdiye kadarki örneklerimizde SELECT yöntemine  Func<T1, TResult>(T1 arg1)  ile temsil edilen, tek parametreli bir lambda ifadesi, örneğin  Ogrenci => Ogrenci.Basarili  kullanmıştık. Select Filtre Kullanımı (Select Filtered) Bu örnek öğrenci bilgilerini içeren bir veri kaynağı ve öğrenci kulüpleri bilgilerini içeren ikinci bir veri kaynağından WHERE cümleciği ile filtre uygulayarak 3. sınıf öğrencilerinin adları ve bu öğrencilerin çalıştıkları kulüp bilgisinden bir isimsiz tip oluşturarak seçer ve bir foreach döngüsü ile çıktıya yazar. var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var Sinif3Kulupleri = from Ogrenci in Ogrenciler                       where Ogrenci.Sinif == 3                       select new { Ogrenci.Adi, Kulup = Kulupler[Ogrenci.Kulup].Adi }; Console.WriteLine("3. sınıf öğrencilerinin üye olduğu kulüpler :"); foreach (var Satir in Sinif3Kulupleri) {     Console.WriteLine("{0}, {1} kulübüne üye.", Satir.Adi, Satir.Kulup); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : 3. sınıf öğrencilerinin üye olduğu kulüpler : Jale, Tiyatro kulübüne üye. Fatma, Tiyatro kulübüne üye. Cevdet, Müzik kulübüne üye. Lale, Gezi kulübüne üye. Erhan, Tiyatro kulübüne üye. Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var Sinif3Kulupleri = Ogrenciler.Where(Ogrenci => Ogrenci.Sinif == 3)                                 .Select(Ogrenci =>                                                    new {                                                          Ogrenci.Adi,                                                          Kulup = Kulupler[Ogrenci.Kulup].Adi                                                    }                                        ); Console.WriteLine("3. sınıf öğrencilerinin üye olduğu kulüpler :"); foreach (var Satir in Sinif3Kulupleri) {     Console.WriteLine("{0}, {1} kulübüne üye.", Satir.Adi, Satir.Kulup); } Console.ReadLine(); Kaynak: https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b Diğer LINQ Makaleleri: LINQ Örnekleri makalelerinde kullanılan verikaynağı LINQ (Language Integrated Query - Dile Entegre Edilmiş Sorgu) Nedir? LINQ Sağlayıcıları (LINQ Providers) LINQ Yöntem Sözdizimi (LINQ Method Syntax) LINQ - Temel İşlemler - Bir Veri Kaynağı Bildirme ve Seçme (From ve Select) LINQ - Temel İşlemler - Süzme (Filtering) LINQ - Temel İşlemler - Sıralama (Ordering) LINQ - Temel İşlemler - Gruplama (Grouping) LINQ - Temel İşlemler - Birleştirme (Joining) LINQ - Deferred Execution - Ertelenmiş Çalıştırma LINQ - Immediate Execution - Anında Çalıştırma LINQ - Query Reuse - Sorgunun Yeniden Kullanımı LINQ - Kısıtlama (Restriction) Kullanım Örnekleri LINQ - Yansıtma (Projection) - Select Kullanım Örnekleri  (Bu makale) LINQ - Yansıtma (Projection) - SelectMany Kullanım Örnekleri LINQ - Bölümleme (Partitioning) Örnekleri LINQ - Sıralama (Ordering) Örnekleri LINQ - Gruplama (Grouping) Örnekleri LINQ - Küme (Set) Örnekleri LINQ - Dönüşüm (Conversion) Örnekleri LINQ - Eleman (Element) Seçimi Örnekleri LINQ - Oluşturma (Generation) Örnekleri LINQ - Miktar Belirleyiciler (Quantifiers) Örnekleri LINQ - Yığın (Aggregate) Örnekleri LINQ - Birleştirme (Join) İşlemleri LINQ - Özel Dizilim (Custom Sequence) Örneği LINQ - Concat ve SequenceEqual İle Örnekle r
Ekleyen: canora
Değiştiren: canora
10.04.16 17:17
LINQ - Yansıtma (Projection) - Select Kullanım Örnekleri
Bu makalede kullanılan  veri kaynağını görmek için tıklayın . Basit Select Kullanımı 1 LINQ sorgularında çoğunlukla bitiş 
olarak görülen SELECT cümleciği ile o anda sayılan eleman bildirilirse 
bu eleman seçilir. Ancak aşağıdaki örnekteki gibi oluşturulacak yeni 
listede kullanılmak üzere elemanın kendisi değil bir özelliği de 
seçilebilir ve yeni liste (örneğimizde OgrenciSoyadlari) bu değerlerden 
oluşur. İleride göreceğimiz gibi SELECT bazen çok farklı bir isimsiz 
sınıf oluşturup onu da seçebilir. Bu örnek öğrenci bilgilerini içeren bir veri kaynağından öğrencilerin soyadlarını seçer. var Ogrenciler = OgrencileriGetir(); var OgrenciSoyadlari =     from Ogrenci in Ogrenciler     select Ogrenci.Soyadi; Console.WriteLine("Öğrencilerin soyadları :"); foreach (var Soyad in OgrenciSoyadlari) {     Console.WriteLine(Soyad); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : 1. Sınıftaki Başarılı öğrenciler... Oran, Kenan Erkanlı, Erhan Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); var OgrenciSoyadlari = Ogrenciler.Select(Ogrenci => Ogrenci.Soyadi); Console.WriteLine("Öğrencilerin soyadları :"); foreach (var Soyad in OgrenciSoyadlari) {     Console.WriteLine(Soyad); } Console.ReadLine(); Basit Select Kullanımı 2 Bu örnek, bir tamsayılar dizisindeki elemanların 1 fazlalarını seçer. int[] Sayilar = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var SayilarArtiBir = from Sayi in Sayilar                      select Sayi + 1; Console.WriteLine("Sayılar + 1:"); foreach (var i in SayilarArtiBir) {     Console.WriteLine(i); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Sayılar + 1: 6 5 2 4 10 9 7 8 3 1 Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: int[] Sayilar = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var SayilarArtiBir = Sayilar.Select(Sayi => Sayi + 1); Console.WriteLine("Sayılar + 1:"); foreach (var i in SayilarArtiBir) {     Console.WriteLine(i); } Console.ReadLine(); Select Dönüştürme (Transformation) Bu örnek öğrenci bilgilerini içeren bir veri kaynağından ve öğrenci kuluplerinin bilgilerini içeren ikinci bir veri kaynağından öğrencilerin adlarını ve kulüplerin adlarını seçerek öğrencilerin adları ve üye oldukları kulüplerin adlarından yeni bir liste oluşturur. Öğrenciler veri kaynağındaki kayıtlarda öğrenci kulüpleri, kulüp veri kaynağındaki kulübün sıra numarası ve aynı zamanda kayıt numarası olan bir numara ile belirlenmiştir. var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var OgrencilerVeKulupleri = from Ogrenci in Ogrenciler                             select Ogrenci.Adi + ": " + Kulupler[Ogrenci.Kulup].Adi; Console.WriteLine("Öğrencilerin üye olduğu kulüpler :"); foreach (var Satir in OgrencilerVeKulupleri) {     Console.WriteLine(Satir); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Öğrencilerin üye olduğu kulüpler : Tuncay: Gezi Jale: Tiyatro Tekin: Tiyatro Mesut: Tiyatro Veli: Müzik Ahmet: Müzik Fatma: Tiyatro Mehmet: Gezi Hale: Tiyatro Ayşe: Tiyatro Cevdet: Müzik Nuri: Müzik Kenan: Gezi Lale: Gezi Erhan: Tiyatro Erhan: Tiyatro Erhan: Tiyatro Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var OgrencilerVeKulupleri = Ogrenciler.Select(Ogrenci => Ogrenci.Adi + ": " + Kulupler[Ogrenci.Kulup].Adi); Console.WriteLine("Öğrencilerin üye olduğu kulüpler :"); foreach (var Satir in OgrencilerVeKulupleri) {     Console.WriteLine(Satir); } Console.ReadLine(); Select ve isimsiz Tip (Anonymous Types) Kullanımı 1 Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki öğrenci ad ve soyadlarından yeni bir isimsiz tip oluşturarak seçer. var Ogrenciler = OgrencileriGetir(); var BuyukHarfIsimler = from Ogrenci in Ogrenciler                        select new { Ad = Ogrenci.Adi.ToUpper(),                                     Soyad = Ogrenci.Soyadi.ToUpper() }; Console.WriteLine("Büyük harflerle öğrenci isimleri :"); foreach (var BuyukHarfIsim in BuyukHarfIsimler) {     Console.WriteLine("{0} {1}", BuyukHarfIsim.Ad, BuyukHarfIsim.Soyad); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır: Büyük harflerle öğrenci isimleri : TUNCAY ÇAĞRI JALE İKİNCİ TEKİN UĞURLU MESUT BAHTİYAR VELİ CANLI AHMET GEÇE FATMA TEYZE MEHMET EMRE HALE BİRİNCİ AYŞE HANIM CEVDET DÖĞER NURİ BABAYİĞİT KENAN ORAN LALE ÜÇÜNCÜ ERHAN ERKANLI ERHAN FİDAN ERHAN ÇELİK Daha önceki örneklerimizde görüldüğü gibi, foreach döngüsü içinde döngü sırasında seçilecek elemanın tipini bildirmek için var kulandık. Var ifadesi kolaylık olsun diye, elemanın tipi ile uğraşmamak için kullanıldı. Var ile tanımlamak yerine elemanın tipi de verilebilirdi. Örneğin  Basit Where Örneği 1 'de kullandığımız örneği (özellikle  foreach  bölümününe dikkat edin) var ifadelerini çıkarıp aşağıdaki gibi de yazabilirdik. int[] Rakamlar = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; IEnumerable<int> KucukRakamlar = from Rakam in Rakamlar                                  where Rakam < 5                                  select Rakam; Console.WriteLine("5'den küçük rakamlar..."); foreach (int Rakam in KucukRakamlar) {     Console.WriteLine(Rakam); } Console.ReadLine(); Anonim tiplerde ise tipin bir adı olmadığından mecburen  var  kullanırız. Anonim tiplerin isimleri derleme zamanında derleyici tarafından belirlenir. Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); var BuyukHarfIsimler =     Ogrenciler.Select(Ogrenci => new { Ad = Ogrenci.Adi.ToUpper(),                                        Soyad = Ogrenci.Soyadi.ToUpper() }); Console.WriteLine("Büyük harflerle öğrenci isimleri :"); foreach (var BuyukHarfIsim in BuyukHarfIsimler) {     Console.WriteLine("{0} {1}", BuyukHarfIsim.Ad, BuyukHarfIsim.Soyad); } Console.ReadLine(); Select ve isimsiz Tip (Anonymous Types) Kullanımı 2 Bu örnek öğrenci bilgilerini içeren bir veri kaynağı ve öğrenci kulüpleri bilgilerini içeren ikinci bir veri kaynağından öğrenci adları ve üye oldukları kulüplerin adlarını kullanarak daha önceki örnekten bir parça daha karmaşık bir isimsiz tip oluşturarak seçer. var Ogrenciler = OgrencileriGetir(); List<KulupKaydi> Kulupler = KulupleriGetir(); var OgrencilerVeKulupleri =     Ogrenciler.Select(Ogrenci =>                                  new                                  {                                      Adi = Ogrenci.Adi,                                      Kulubu = Kulupler[Ogrenci.Kulup].Adi,                                      TiyatroMu = Ogrenci.Kulup == 1 ? "Evet" : "Hayır"                                  }); Console.WriteLine("Öğrenciler ve kulüpleri:"); foreach (var Satir in OgrencilerVeKulupleri) {     Console.WriteLine("Adı : {0}, Kulübü : {1}, Tiyatro Kulübünde : {2}",                       Satir.Adi,                       Satir.Kulubu,                       Satir.TiyatroMu); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Öğrenciler ve kulüpleri: Adı : Tuncay, Kulübü : Gezi, Tiyatro Kulübünde : Hayır Adı : Jale, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Tekin, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Mesut, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Veli, Kulübü : Müzik, Tiyatro Kulübünde : Hayır Adı : Ahmet, Kulübü : Müzik, Tiyatro Kulübünde : Hayır Adı : Fatma, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Mehmet, Kulübü : Gezi, Tiyatro Kulübünde : Hayır Adı : Hale, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Ayşe, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Cevdet, Kulübü : Müzik, Tiyatro Kulübünde : Hayır Adı : Nuri, Kulübü : Müzik, Tiyatro Kulübünde : Hayır Adı : Kenan, Kulübü : Gezi, Tiyatro Kulübünde : Hayır Adı : Lale, Kulübü : Gezi, Tiyatro Kulübünde : Hayır Adı : Erhan, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Erhan, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Adı : Erhan, Kulübü : Tiyatro, Tiyatro Kulübünde : Evet Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var OgrencilerVeKulupleri =     Ogrenciler.Select(Ogrenci =>                                  new                                  {                                      Adi = Ogrenci.Adi,                                      Kulubu = Kulupler[Ogrenci.Kulup].Adi,                                      TiyatroMu = Ogrenci.Kulup == 1 ? "Evet" : "Hayır"                                  }); Console.WriteLine("Öğrenciler ve kulüpleri:"); foreach (var Satir in OgrencilerVeKulupleri) {     Console.WriteLine("Adı : {0}, Kulübü : {1}, Tiyatro Kulübünde : {2}",                       Satir.Adi,                       Satir.Kulubu,                       Satir.TiyatroMu); } Console.ReadLine(); Select ve İsimsiz Tip (Anonymous Types) Kullanımı 3 Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki öğrenci kayıtlarından öğrenci adı, sınıfı ve başarı durumunu özelliklerinden yeni bir isimsiz tip oluşturur ve seçer. Daha sonra bir foreach döngüsü ile çıktıya yazar. var Ogrenciler = OgrencileriGetir(); var OgrenciOzetBilgileri = from Ogrenci in Ogrenciler                            select new                            {                                Ogrenci.Adi,                                Ogrenci.Sinif,                                BasariliMi = Ogrenci.Basarili                            }; Console.WriteLine("Öğrenci başarı durumları :"); foreach (var OzetBilgi in OgrenciOzetBilgileri) {     Console.WriteLine("{0}, {1}. sınıfta ve {2}.",                       OzetBilgi.Adi,                       OzetBilgi.Sinif,                       OzetBilgi.BasariliMi ? "başarılı" : "başarısız"); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Öğrenci başarı durumları : Tuncay, 4. sınıfta ve başarılı. Jale, 3. sınıfta ve başarılı. Tekin, 1. sınıfta ve başarısız. Mesut, 4. sınıfta ve başarısız. Veli, 4. sınıfta ve başarısız. Ahmet, 2. sınıfta ve başarılı. Fatma, 3. sınıfta ve başarılı. Mehmet, 4. sınıfta ve başarılı. Hale, 2. sınıfta ve başarısız. Ayşe, 2. sınıfta ve başarılı. Cevdet, 3. sınıfta ve başarısız. Nuri, 2. sınıfta ve başarılı. Kenan, 1. sınıfta ve başarılı. Lale, 3. sınıfta ve başarısız. Erhan, 1. sınıfta ve başarılı. Erhan, 2. sınıfta ve başarılı. Erhan, 3. sınıfta ve başarılı. Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); var OgrenciOzetBilgileri =     Ogrenciler.Select(Ogrenci =>                                  new                                 {                                     Ogrenci.Adi,                                     Ogrenci.Sinif,                                     BasariliMi = Ogrenci.Basarili                                 }); Console.WriteLine("Öğrenci başarı durumları :"); foreach (var OzetBilgi in OgrenciOzetBilgileri) {     Console.WriteLine("{0}, {1}. sınıfta ve {2}.",                       OzetBilgi.Adi,                       OzetBilgi.Sinif,                       OzetBilgi.BasariliMi ? "başarılı" : "başarısız"); } Console.ReadLine(); Dizinli / indeksli (Indexed) Select Kullanımı Select yönteminin 2. kullanım şeklinde, yöntem o anda bulunduğu eleman ile elemanın 0 tabanlı sıra numarasını (index) Lambda İfadesi olarak yazılabilecek bir isimsiz fonksiyona gönderir. Bu isimsiz fonksiyonda elemanın kensini ve sıra numarası ile ilgili işlemleri yaparız. Bu örnek öğrenci bilgilerini içeren bir veri kaynağındaki öğrenci kayıtlarından öğrencinin listedeki sırası, numarası, adı ve soyadı verilerinden yeni bir isimsiz tip oluşturur ve seçer. Daha sonra bir foreach döngüsü ile çıktıya yazar. var Ogrenciler = OgrencileriGetir(); var OgrenciListesi = Ogrenciler.Select((Ogrenci, Index) => new { Sirasi = Index + 1,                                                                  Ogrenci.No,                                                                  Ogrenci.Adi,                                                                  Ogrenci.Soyadi }); Console.WriteLine("Öğrenci listesi :"); foreach (var ListeSatiri in OgrenciListesi) {     Console.WriteLine("{0}- {1} {2}  {3}",                       ListeSatiri.Sirasi,                       ListeSatiri.No,                       ListeSatiri.Adi,                       ListeSatiri.Soyadi); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : Öğrenci listesi : 1- 2 Tuncay  Çağrı 2- 4 Jale  İkinci 3- 7 Tekin  Uğurlu 4- 8 Mesut  Bahtiyar 5- 12 Veli  Canlı 6- 6 Ahmet  Geçe 7- 15 Fatma  Teyze 8- 14 Mehmet  Emre 9- 3 Hale  Birinci 10- 13 Ayşe  Hanım 11- 11 Cevdet  Döğer 12- 1 Nuri  Babayiğit 13- 5 Kenan  Oran 14- 9 Lale  Üçüncü 15- 10 Erhan  Erkanlı 16- 16 Erhan  Fidan 17- 17 Erhan  Çelik Dizinli SELECT yöntemi  Func<T1, T2, TResult>(T1 arg1, T2 arg2)   delegesi ile temsil edilen ve Lambda İfadesi şeklinde yazdığımız bir isimsiz fonksiyon kullanır. Bu isimsiz fonksiyona 2 parametre geçer. 1. parametre o anda sayılan elemanın kendisi, 2. parametre olarak da elemanın sırası 0 tabanlı olarak (ilk elemanın numarası 0) döndürülür. Biz de elemanın kendisini ve sırasını kullanarak isimsiz fonksiyon içinde işlemler gerçekleştirebiliriz. Şimdiye kadarki örneklerimizde SELECT yöntemine  Func<T1, TResult>(T1 arg1)  ile temsil edilen, tek parametreli bir lambda ifadesi, örneğin  Ogrenci => Ogrenci.Basarili  kullanmıştık. Select Filtre Kullanımı (Select Filtered) Bu örnek öğrenci bilgilerini içeren bir veri kaynağı ve öğrenci kulüpleri bilgilerini içeren ikinci bir veri kaynağından WHERE cümleciği ile filtre uygulayarak 3. sınıf öğrencilerinin adları ve bu öğrencilerin çalıştıkları kulüp bilgisinden bir isimsiz tip oluşturarak seçer ve bir foreach döngüsü ile çıktıya yazar. var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var Sinif3Kulupleri = from Ogrenci in Ogrenciler                       where Ogrenci.Sinif == 3                       select new { Ogrenci.Adi, Kulup = Kulupler[Ogrenci.Kulup].Adi }; Console.WriteLine("3. sınıf öğrencilerinin üye olduğu kulüpler :"); foreach (var Satir in Sinif3Kulupleri) {     Console.WriteLine("{0}, {1} kulübüne üye.", Satir.Adi, Satir.Kulup); } Console.ReadLine(); Örneğin çıktısı şöyle olacaktır : 3. sınıf öğrencilerinin üye olduğu kulüpler : Jale, Tiyatro kulübüne üye. Fatma, Tiyatro kulübüne üye. Cevdet, Müzik kulübüne üye. Lale, Gezi kulübüne üye. Erhan, Tiyatro kulübüne üye. Aynı örnek,  LINQ Yöntem Sözdizimi (LINQ Method Syntax)  ile şu şekilde yazılabilir: var Ogrenciler = OgrencileriGetir(); List Kulupler = KulupleriGetir(); var Sinif3Kulupleri = Ogrenciler.Where(Ogrenci => Ogrenci.Sinif == 3)                                 .Select(Ogrenci =>                                                    new {                                                          Ogrenci.Adi,                                                          Kulup = Kulupler[Ogrenci.Kulup].Adi                                                    }                                        ); Console.WriteLine("3. sınıf öğrencilerinin üye olduğu kulüpler :"); foreach (var Satir in Sinif3Kulupleri) {     Console.WriteLine("{0}, {1} kulübüne üye.", Satir.Adi, Satir.Kulup); } Console.ReadLine();
Ekleyen: canora