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: Esempio di query con Visual Basic 2008

In questo post vediamo come eseguire una query su una collection di oggetti, utilizzando LINQ e Visual Basic 2008. Per realizzare l'esempio proposto è sufficiente creare una nuova Console Application.

In primo luogo scriviamo una classe chiamata Impiegato, che espone due proprietà, ossia il nome e il ruolo di un ipotetico impiegato:

Class Impiegato

 

    Private name As String

    Private role As String

 

    Property Nome() As String

        Get

            Return name

        End Get

        Set(ByVal value As String)

            name = value

        End Set

    End Property

 

    Property Ruolo() As String

        Get

            Return role

        End Get

        Set(ByVal value As String)

            role = value

        End Set

    End Property

End Class

Fatto questo, passiamo a scrivere un po' di codice nella Sub Main (trattandosi di un'applicazione Console). In primo luogo, istanziamo un oggetto chiamato impiegati che è una collezione generica di oggetti Impiegato, aggiungendo alla collezione stessa tre ipotetici impiegati:

        Dim impiegati As New List(Of Impiegato)

        impiegati.Add(New Impiegato With {.Nome = "Alessandro", .Ruolo = "Amministrativo"})

        impiegati.Add(New Impiegato With {.Nome = "Mario", .Ruolo = "Commerciale"})

        impiegati.Add(New Impiegato With {.Nome = "Diego", .Ruolo = "Amministrativo"})

In questo primo code snippet, potete osservare l'utilizzo dei cosiddetti Object Initializers. In altre parole, avete visto che la classe Impiegato non ha costruttore che accetta argomenti. Mediante questa tecnica è possibile assegnare un valore alle proprietà di ogni istanza della classe durante la sua inizializzazione, anche se il costruttore non accetta argomenti.

Il codice può essere completato nel modo seguente, che estrae gli impiegati del ruolo amministrativo dalla collection:

        Dim amministrativi = From amministrativo In impiegati _

                             Where amministrativo.Ruolo = "Amministrativo" _

                             Select amministrativo

 

        For Each ruolo In amministrativi

            Console.WriteLine("{0}, {1}", ruolo.Nome, ruolo.Ruolo)

        Next

 

        Console.ReadLine()

    End Sub

In questo snippet, ad un campo chiamato amministrativi vengono assegnati tutti gli impiegati che (From amministrativo In impiegati) appartengono al ruolo amministrativo (Where amministrativo.Ruolo = "Amministrativo"). L'assegnazione avviene mediante l'utilizzo della keyword Select. In tutto questo riveste grande importanza la Local Type Inference: grazie all'inferenza dei tipi, infatti, il compilatore è in grado di determinare automaticamente il tipo di dato di ciascun oggetto dichiarato, per il quale non sia stato specificato esplicitamente il tipo.

Il ciclo For..Each itera la collection e mostra le proprietà Nome e Ruolo di ciascun impiegato appartenente alla collection stessa. Questo esempio è, ovviamente, piuttosto semplice in quanto didattico ma credo possa essere utile a livello di logica.

Alessandro

 

 

Print | posted on lunedì 25 febbraio 2008 03:52 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET