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

Elencare i file di una directory con LINQ in .NET 4.0

Quando esce una nuova versione di .NET Framework il pensiero va spesso, almeno nel mio caso, alle nuove mirabolanti tecnologie che questa possa offrire, ma spesso ci sfugge che ci sono piccole aggiunte anche alla libreria di classi base ereditata dal predecessore.

Per puro caso ho scoperto oggi che la classe System.IO.Directory di .NET Framework 4.0 Beta 1 offre ora un metodo chiamato EnumerateFiles, che fa lo stesso di quanto già facesse GetFiles, solo che restituisce una IEnumerable(Of String) rendendo il risultato, di fatto, interrogabile con LINQ in modo diretto.

Un esempio:

        Dim filesEnumerable As IEnumerable(Of String) = Directory.EnumerateFiles("C:\", "*.exe")

In sostanza si usa esattamente come GetFiles, ma il tipo restituito è diverso. La vera finezza sta nel poterci scrivere su una query LINQ, come nel seguente esempio che estrae i nomi dei file nella directory specificata, contenenti la parola "document":

        Dim fileList = From everyFile In Directory.EnumerateFiles("C:\")

                       Where everyFile.ToLowerInvariant.Contains("document")

                       Select everyFile

 

        For Each item In fileList

            Console.WriteLine("File name: {0}", item)

        Next

Vale sempre il discorso che la query viene eseguita quando il suo risultato è effettivamente utilizzato, come sempre in LINQ. Così come valgono tutti i concetti generali di LINQ to Objects anche in questo caso. Probabilmente è una scoperta banale, ma comunque esiste :-)

Alessandro

Print | posted on lunedì 14 settembre 2009 21:07 | Filed Under [ .NET Framework Visual Basic LINQ Visual Studio 2010 ]

Powered by:
Powered By Subtext Powered By ASP.NET