Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, 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

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: Esecuzione di un conteggio con la clausola Aggregate (VB 2008)

Con LINQ è possibile eseguire dei calcoli nell’ambito delle query. In particolare, è possibile eseguire il conteggio, la somma e la media degli elementi recuperati mediante l’interrogazione.

In questo post vedremo come eseguire il conteggio degli elementi rilevati tramite una query. L’esempio sarà, per forza di cose, volutamente semplice ed applicato a un oggetto di piccola entità.

Supponiamo, quindi, di avere una classe Cliente che ha due proprietà, Nome (che indica il nome del cliente) e Città (che indica la città ove risiede il cliente):

Class Cliente

 

    'Sempre per velocità utilizziamo dei campi

    'pubblici, ricordando che in scenari reali si

    'implementano proprietà

    Public Citta As String

    Public Nome As String

 

End Class

Se, ad esempio, siamo nell’ambito di un’applicazione Console, all’interno del modulo principale istanziamo una collection di classi Cliente e la popoliamo:

Module Module1

 

    Dim elencoClienti As New List(Of Cliente)

 

    Sub PopolaElenco()

        elencoClienti.Add(New Cliente With {.Citta = "Roma", .Nome = "Alessandro"})

        elencoClienti.Add(New Cliente With {.Citta = "Milano", .Nome = "Antonio"})

        elencoClienti.Add(New Cliente With {.Citta = "Milano", .Nome = "Maurizio"})

 

    End Sub

Il metodo PopolaElenco verrà poi chiamato dalla Sub Main.  Scriveremo, ora, una query che ci consentirà di ottenere il numero dei clienti residenti nella città di Milano. Ciò posto, nella Sub Main scriviamo il seguente codice:

    Sub Main()

 

        PopolaElenco()

 

        Dim perCitta = Aggregate customer In elencoClienti _

                       Where customer.Citta = "Milano" _

                       Into Count()

 

        Console.WriteLine("I clienti residenti in Milano sono {0}", perCitta.ToString)

 

        Console.Read()

    End Sub

 

End Module

Per spiegare in parole povere cosa fa il codice della query, osserviamo che la clausola Aggregate recupera il numero di elementi contenuti nella collection elencoClienti, filtrati dalla clausola Where (quindi solo quelli per i quali il valore della proprietà Città sia Milano) e li invia a un metodo Extension chiamato Count che, a sua volta, restituisce il numero totale degli elementi filtrati assegnandoli alla variabile perCitta.

A conferma di ciò, la successiva riga di codice mostra nella finestra della Console il risultato del conteggio. Come detto antecedentemente, l’oggetto interrogato è volutamente semplice ma un discorso simile potrebbe tornarvi utile, ad esempio, nell’interrogare un database contenente centinaia di clienti; la sintassi rimane sempre la stessa e in questo LINQ è veramente fenomenale.

Alessandro

Print | posted on domenica 23 marzo 2008 23:11 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET