Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

LINQ: convertire in matrici il risultato delle query

Grazie ad alcuni metodi extension, i risultati delle query eseguite con la sintassi di LINQ possono essere agevolmente convertiti in altri tipi di dato. Uno di questi è costituito dalle matrici.

 

Esiste, infatti, un metodo extension chiamato ToArray che converte un risultato di tipo IEnumerable(Of T) in un array di oggetti di tipo corrispondente. Detto in altre parole, considerate ad esempio il seguente documento XML che riepiloga una breve lista di contatti:

 

<?xml version="1.0"?>

<Contatti>

  <Contatto Nome="Alessandro" Cognome="Del Sole" Blog="http://community.visual-basic.it/Alessandro"/>

  <Contatto Nome="Mario" Cognome="De Ghetto" Blog="http://deghetto.wordpress.com"/>

  <Contatto Nome="Diego" Cognome="Cattaruzza" Blog="http://community.visual-basic.it/Diego"/>

  <Contatto Nome="Gianluca" Cognome="Cannalire" Blog="http://community.visual-basic.it/Gianluca"/>

</Contatti>

 

Il seguente codice Visual Basic estrae tutti gli elementi contraddistinti dall’identificatore Contatto, ordinandoli in base al cognome:

 

        'In una applicazione Console non ho a disposizione la classe Application:

        Dim document = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "Contacts.xml")

 

        Dim contatti = From contatto In document...<Contatto> _

                     Order By contatto.@Cognome _

                     Select contatto

 

Ora posso convertire il risultato della query, che per inferenza è determinato come IEnumerable(Of XElement), in una matrice di oggetti XElement:

 

        Dim contacts() As XElement = contatti.ToArray 'metodo extension

 

Fatto questo, posso accedere agli elementi della matrice nel modo che già conosciamo:

 

        'Estrae Mario De Ghetto:

        Console.WriteLine("{0} {1}, Blog: {2}", contacts(2).@Nome, contacts(2).@Cognome, contacts(2).@Blog)

 

I metodi extension di conversione, ovviamente, non sono caratteristici solo di LINQ-to-XML visto in questo esempio, ma si possono utilizzare anche nelle altre implementazioni di questa fantastica tecnologia.

 

Se fossimo stati in ambito LINQ-to-SQL, avrei potuto dichiarare, ad esempio, una matrice di oggetti Customer a cui assegnare il risultato di una interrogazione eseguita sulla classe Customers, sempre mediante il metodo ToArray.

 

Alessandro

Print | posted on sabato 19 aprile 2008 20:55 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET