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: le clausole Skip e Take nelle query con Visual Basic 2008

LINQ
implementa due speciali clausole da utilizzare nelle query, Skip e Take.

Skip consente di non includere nel risultato della query il numero specificato di elementi (in base all'ordine stabilito), mentre Take consente di aggiungere al risultato della query solo il numero specificato di elementi. Vediamo un esempio di codice per chiarire il discorso. Scriviamo, in primo luogo, una banalissima classe Nomi, con due campi Nome e ID in questo modo:

Class Nomi

 

    'Nota: per velocità usiamo dei campi pubblici,

    'in uno scenario reale si implementano delle proprietà

    Public Nome As String

    Public Id As Integer

 

End Class

Stiamo utilizzando un valore numerico (ID) che ci permetterà di eseguire l'ordinamento della query in modo più semplice. Ora, va istanziata una collezione generica di questo tipo di classe e popolata. Un esempio può essere il seguente (notate che i valori del campo ID non sono progressivi):

        Dim collezione As New List(Of Nomi)

 

        collezione.Add(New Nomi With {.Id = 1, .Nome = "Alessandro"})

        collezione.Add(New Nomi With {.Id = 3, .Nome = "Mario"})

        collezione.Add(New Nomi With {.Id = 2, .Nome = "Sergio"})

        collezione.Add(New Nomi With {.Id = 5, .Nome = "Diego"})

        collezione.Add(New Nomi With {.Id = 4, .Nome = "Gianluca"})

Si passa, poi, a scrivere una query che vuole estrarre solo alcuni nomi in base al numero identificativo:

        Dim persone = From nome In collezione _

                      Order By nome.Id _

                      Skip 2 _

                      Take 2

in sostanza, il risultato dell'interrogazione viene ordinato, tramite la clausola Order By, in base al valore numerico (ID), al fine di ottenere un ordinamento progressivo. La clausola Skip dice al compilatore di escludere i primi due risultati (in questo esempio, Alessandro e Sergio). La clausola Take, poi, dice al compilatore di includere nel risultato solo i primi due elementi (ovviamente tra i tre non esclusi dalla Skip), quindi, nell'esempio, Mario e Gianluca.

Iterando il risultato della query in questo modo:

        For Each persona In persone

            Console.WriteLine(persona.Nome)

        Next

 

        Console.ReadLine()

Nella finestra della Console apparirà il risultato costituito dai due nomi Mario e Gianluca.

Alessandro

 

 

Print | posted on giovedì 20 marzo 2008 01:55 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET