LINQ – Anonymous Type Kullanarak Sonuç Geri Dönme
LINQ sorgulamalarında sonuç kümelerini ya var tipinden değişkene alabiliyorduk ya tipinden emin olduğumuz koleksiyona veya diziye çevirerek alabiliyorduk ya da kendi belirlediğimiz bir tip geri döndürüyorduk.LINQ sorgusu sonucunda elimize geçen sonuç kümesindeki nesnelerin ya da değerlerin, bazı özelliklerini ya da tüm değerlerini, isimsiz bir nesne üzerinden geri dönmeye Anonymous Type deniyor.
Anonymous Type kullanarak sonuç dönerken kazandığımız esneklikler mevcut.Bu konuyu dahada somutlaştırmak için bir örnek verebilirim.LINQ sorgulamamız sonucu, içinde “Adı” , “Soyadı” ve “DogumTarihi” özellikleri olan nesneler dönecektir.Ancak ben dönen bu nesnelerin “Adı” ve “Soyadı” propertylerindeki değerleri, “İsim” ve “Soyisim” adındaki propertylerde saklamak, “DogumTarihi” propertysinide almamak istiyorum.İşte bu durumda Anonymous Type kullanarak “İsim” ve “Soyisim” adındaki özellikler oluşturup, “Adı” ve “Soyadı” özelliklerindeki değerleri bunlara atıp, tipi ne olduğunu bilmediğimiz bir sonuç kümesi elde edebiliriz.
Şimdi Anonymous Type kullanımını gösterebilmek için bir örnek yapalım.C dizinindeki bütün dosyaların bilgilerini çekelim.Ve bu bilgilerden sadece, dosya adı, dosya boyutu ve olusturulma tarihlerini alalım.
DirectoryInfo DosyaBilgileri = new DirectoryInfo("C:/"); FileInfo[] Dosyalar = DosyaBilgileri.GetFiles(); var Sonuc = from Dosya in Dosyalar where Dosya.Length > 1000 select new { DosyaAdi = Dosya.Name, DosyaBoyutu = Dosya.Length, OlusturulmaTarihi = Dosya.CreationTime }; foreach (var item in Sonuc) { listBox1.Items.Add(item.DosyaAdi + " " + item.DosyaBoyutu + " " + item.OlusturulmaTarihi); }
Yukarıda gördüğünüz gibi, “select” deyiminden sonra “new” anahtar sözcüğünü kullanarak ({}) süslü parantezler arasında elimizdeki dosyaların istediğim bilgilerini, istediğim isimdeki propertylere atıyorum.Sonuçta var tipinden Sonuç adındaki değişkene, içinde DosyaAdi,DosyaBoyutu ve OlusturulmaTarihi adında üç tane propertysi olan nesneler dönmektedir.Tabi bu nesnelerin tiplerinin ve adlarının ne olduğunu bilemeyiz.
Anonymous Type hakkındaki yazım bundan ibaret.Faydasını görmeniz dileğiyle.
İyi çalışmalar..