Tipps und Tricks rund um .NET und Visual Studio

FCL Auf Textdateien mittels LINQ zugreifen
Kommentare

Als Alternative zu File.ReadAllLines wird ab Version 4 die Methode ReadLines bereitgestellt, die anstatt eines String Arrays ein IEnumerable zurückliefert.

Bei einer Iteration dieses IEnumerable werden die Zeilen nach und nach geladen. Analog dazu stehen mit AppendAllLines sowie WriteAllLines Methoden zur Verfügung, die die Zeilen aus einem IEnumerable an eine Datei anhängen beziehungsweise eine Datei mit diesen Zeilen erstellen oder überschreiben. In dieselbe Kerbe schlagen drei neue Methoden der Klasse DirectoryInfo: EnumerateFiles, EnumerateDirectories und EnumerateFileSystemInfos.

Diese Methoden liefern ein IEnumerable mit den Dateien und/oder Verzeichnissen, die sich innerhalb des jeweiligen Ordners befinden. Da LINQ auf den Möglichkeiten von IEnumerable basiert, erlauben diese neuen Methoden ein einfaches und elegantes Formulieren von Abfragen, die sich auf Dateien und Dateiinhalte beziehen. Die LINQ-Abfrage in Listing 1 ermittelt mit diesen Methoden beispielsweise jene Zeilen aus sämtlichen CSV-Dateien des aktuellen Ordners, bei denen sich in der ersten Spalte der Wert 1 wiederfindet.

Das Ergebnis dieser Abfrage, ein IEnumerable, wird anschließend an die zuvor erwähnte Methode WriteAllLines übergeben, um die gefundenen Zeilen in der Datei result.txt zu hinterlegen.

Listing 1

DirectoryInfo dir = new DirectoryInfo(".");

var info =
    from file in Directory.EnumerateFiles(".","*.csv")
    from line in File.ReadLines(file)
    where line.Split(';')[0] == "1"
    select file + ": " + line;

File.WriteAllLines("result.txt", info);
  

Dr. Holger Schwichtenberg (MVP) und FH-Prof. Manfred Steyer arbeiten bei www.IT-Visions.de als Softwarearchitekten, Berater und Trainer für .NET-Technologien. Dabei unterstützen sie zahlreiche Unternehmen beim Einsatz von .NET und entwickeln selbst in größeren Projekten. Sie haben zahlreiche Fachbücher geschrieben und gehören seit vielen Jahren zu den Hauptsprechern auf der BASTA!. Manfred Steyer ist zudem für den Fachbereich „Software Engineering“ der Studienrichtung „IT und Wirtschaftsinformatik“ an der FH CAMPUS 02 in Graz verantwortlich. Dr. Holger Schwichtenberg unterrichtet in Lehraufträgen an den Fachhochschulen Münster und Graz.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -