LINQ y directorios de archivos

Muchas operaciones del sistema de archivos son esencialmente consultas y, por lo tanto, son adecuadas para LINQ.

Nota

Si desea realizar consultas mediante programación en el contenido de varios tipos de archivos y documentos, piense en utilizar Windows Desktop Search Engine.Aunque actualmente no se puede consultar con LINQ, proporciona un servicio de indización eficaz que administra eficazmente las dificultades del sistema de archivos.

Observe que las consultas de esta sección no son destructivas. No se utilizan para cambiar el contenido de los archivos o carpetas originales. Se aplica la regla de que las consultas no deberían producir efectos adversos. Por lo general, el código (incluidas las consultas que realizan operaciones de creación, actualización o eliminación) que se utiliza para modificar los datos de origen se debería mantener apartado del código que se usa simplemente para consultar los datos.

Esta sección contiene los siguientes temas:

Comentarios

La creación de orígenes de datos que representen con precisión el contenido del sistema de archivos y administren las excepciones sin problemas es algo compleja. En los ejemplos de esta sección se crea una colección de instantáneas de objetos FileInfo que representa todos los archivos de una carpeta raíz especificada y todas sus subcarpetas. El estado real de cada FileInfo puede cambiar desde que se comienza hasta que se ejecuta la consulta. Por ejemplo, puede crear una lista de objetos FileInfo para utilizarla como origen de datos. Si intenta tener acceso a la propiedad Length en una consulta, el objeto FileInfo intentará tener acceso al sistema de archivos para actualizar el valor de Length. Si el archivo ya no existe, se producirá una excepción FileNotFoundException en la consulta, aunque no esté consultando el sistema de archivos directamente. Algunas consultas de esta sección usan un método independiente que utiliza estas excepciones concretas en algunos casos. Otra opción es actualizar el origen de datos dinámicamente, mediante FileSystemWatcher.

Vea también

Conceptos

LINQ to Objects