Condividi tramite


Directory di file e LINQ

Molte operazioni sui file system sono essenzialmente query e sono pertanto appropriate per essere utilizzate con LINQ.

Nota

Se si desidera eseguire query a livello di codice sul contenuto di più tipi di file e documenti, utilizzare il motore Windows Desktop Search. Sebbene attualmente non sia possibile eseguire le query con LINQ, viene fornito un servizio di indicizzazione potente che gestisce in modo efficace le complessità del file system.

Le query illustrate in questa sezione sono non distruttive. Non vengono utilizzate per modificare il contenuto dei file o delle cartelle originali. Viene seguita la regola che le query non devono causare alcun effetto collaterale. In generale, il codice, incluse le query che eseguono gli operatori di creazione, aggiornamento ed eliminazione, che modifica i dati di origine deve essere tenuto separato dal codice che esegue solo una query sui dati.

In questa sezione sono trattati i seguenti argomenti:

Commenti

La creazione di un'origine dati che rappresenti esattamente il contenuto del file system e gestisca correttamente le eccezioni è un'attività complessa. Negli esempi riportati in questa sezione viene creato un insieme di snapshot di oggetti FileInfo che rappresentano tutti i file presenti in una cartella radice specificata e in tutte le relative sottocartelle. Lo stato effettivo di ogni oggetto FileInfo può cambiare nell'intervallo di tempo compreso tra l'inizio e la fine dell'esecuzione di una query. Ad esempio, è possibile creare un elenco di oggetti FileInfo da utilizzare come origine dati. Se si tenta di accedere alla proprietà Length in una query, l'oggetto FileInfo tenterà di accedere al file system per aggiornare il valore di Length. Se il file non esiste più, verrà generata un'eccezione FileNotFoundException nella query, anche se non si sta eseguendo una query direttamente sul file system. In alcune query illustrate in questa sezione viene utilizzato un metodo separato che utilizza queste particolari eccezioni in determinati casi. Un'altra opzione consiste nel mantenere l'origine dati aggiornata in modo dinamico utilizzando FileSystemWatcher.

Vedere anche

Concetti

LINQ to Objects