Skip to content

LinqToXML ile Dictionary Yaratmak

Güngeçmiyor ki sayın seyirciler LinqToXML ile yapabileceklerimizden bir yenisini daha farketmeyelim. Bu sefer değineceğim güzellik xml i alıp tek satırda bir dictionary ye map edebilmemiz. Linq in dile gömülü sorgu olayındaki güzelliklerden bir yenisi. Ancak bu güzellikten microsoft un kendisi neden bir haber durumda olduğunu bende en az sizin kadar merak ediyorum. Şu sayfada görebileceğiniz bir örnek var bu dönüştürme işlemi ile ilgili. MSDN deki abimiz ne yapmış almış IEnumerable çıktıyı, sokmuş bir for each döngüye yapmış bir dictionary. Halbuki IEnumerable içerisinde gelen ToDictionary extension member’ı bu işe yaramazsa ne işe yarar diye sorarken bunu halkımla paylaşayım istedim. Ufacık bir örneğimiz var, örnekte şu standart xml i kullanıyoruz;

Dim xdoc As XDocument = XDocument.Load(Application.StartupPath & "\xmldata.xml")
Dim dict As Dictionary(Of String, String) = (From xbook In xdoc...<book> _
Select xbook.<title>.Value, xbook.<author>.Value) _
.ToDictionary(Function(a) a.title, Function(b) b.author)

kısaca değinmek istersek: ne yapıyoruz? bir sorgu alıyoruz title ve author dan oluşan IEnumerable(Of anonymousType) oluyor çıktı tabiki. (madem biliyoruz title ve author dan oluşan bir obje çıkacak neden hala anonim bir tip oluyor peki, tamam kurcalamayayım) bu çıkan tipi ToDictionary ile dictionary ye çeviriyoruz. Bu naçizane ext. member’ın iki parametresiden birincisi key selector, diğeri value selector.

Görüldüğü üzere bir IEnumerable çıkartıp enumeratorü üzerinde for each ler döndürmeden tek satırda işlemi yapabiliyoruz,

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*