Effizientes zeilenweises Lesen von Dateien in C# mit LINQ
Bei der Verarbeitung von Textdateien, bei denen jede Zeile eine individuelle Bearbeitung erfordert, bietet StreamReader eine einfache Lösung. Für eine verbesserte Effizienz und Lesbarkeit bietet LINQ jedoch einen eleganteren Ansatz.
Um zu vermeiden, dass die gesamte Datei in den Speicher geladen wird, sollten Sie die Verwendung eines Iteratorblocks in Betracht ziehen:
static IEnumerable<SomeType> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { SomeType newRecord = /* parse line */ yield return newRecord; } } }
Alternativ für eine einfachere Lösung Version:
static IEnumerable<string> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { yield return line; } } }
Die ReadFrom(...)-Funktion gibt eine verzögert ausgewertete Sequenz zurück und vermeidet so die Datenpufferung. Durch die Kombination von ReadFrom(...) mit anderen LINQ-Operationen (z. B. Where, Select) kann eine effiziente zeilenweise Verarbeitung ohne Einbußen bei der betrieblichen Effizienz erreicht werden.
Das obige ist der detaillierte Inhalt vonWie kann LINQ die Effizienz beim zeilenweisen Lesen von Dateien in C# verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!