Share via


LINQ und Dateiverzeichnisse

Bei vielen Dateisystemvorgängen handelt es sich im Wesentlichen um Abfragen. Sie sind deshalb für den LINQ-Ansatz gut geeignet.

Tipp

Wenn Sie programmgesteuerte Abfragen in den Inhalten mehrerer Arten von Dokumenten und Dateien ausführen möchten, empfiehlt es sich, die Windows-Desktopsuche zu verwenden. Obwohl es derzeit nicht mit LINQ abgefragt werden kann, bietet es einen umfassenden Indexdienst, der die Komplexität des Dateisystems effektiv verwaltet.

Beachten Sie, dass die Abfragen in diesem Abschnitt nicht destruktiv sind. Sie werden nicht verwendet, um den Inhalt der ursprünglichen Dateien oder Ordner zu ändern. Dies folgt der Regel, dass Abfragen keine Nebeneffekte verursachen sollten. Im Allgemeinen sollte jeder Code (einschließlich Abfragen, die Operatoren erstellen/aktualisieren/löschen), der Quelldaten modifiziert, von Codes, die Daten lediglich abfragen, getrennt werden.

Dieser Abschnitt behandelt folgende Themen:

Kommentare

Das Erstellen einer Datenquelle, die genau die Inhalte des Dateisystems wiedergibt und Ausnahmen ordnungsgemäß behandelt, ist recht aufwändig. Die Beispiele in diesem Abschnitt erstellen eine Momentaufnahmeauflistung von FileInfo-Objekten, die alle Dateien eines angegebenen Stammordners und all seine Unterordner darstellt. Der Zustand jedes FileInfo-Objekts kann sich in der Zeit, in der Sie eine Abfrage beginnen und beenden, verändern. Zum Beispiel können Sie eine Liste von FileInfo-Objekten erstellen, die als Datenquelle verwendet werden soll. Beim Versuch, in einer Abfrage auf die Length-Eigenschaft zuzugreifen, wird das FileInfo-Objekt versuchen, auf das Dateisystem zuzugreifen, um den Wert von Length zu aktualisieren. Wenn die Datei nicht länger besteht, werden Sie in Ihrer Abfrage eine FileNotFoundException erhalten, auch wenn Sie das Dateisystem nicht direkt abfragen. Einige Abfragen in diesem Abschnitt nutzen eine separate Methode, die diese bestimmten Ausnahmen in gewissen Fällen abfängt. Eine andere Möglichkeit wäre, Ihre Datenquelle dynamisch durch Verwenden von FileSystemWatcher aktualisiert zu halten.

Siehe auch

Konzepte

LINQ-zu-Objekte