Eine Datei Zeile für Zeile in C# mit LINQ lesen
Beim Umgang mit Textdateien in C# ist es wichtig, jede Zeile effizient zu lesen. Während die Verwendung eines StreamReader und die individuelle Iteration über Zeilen ein gängiger Ansatz ist, ist die Erforschung effizienterer Methoden mit LINQ ein lohnendes Unterfangen.
Effiziente LINQ-Implementierung
Um diese Effizienz zu erreichen kann ein LINQ-basierter Zeilenleser mithilfe eines Iteratorblocks implementiert werden. Dieser Ansatz vermeidet das Laden der gesamten Datei in den Speicher und gewährleistet so die Betriebseffizienz bei großen Dateien:
static IEnumerable<T> ReadFrom(string file) { string line; using (var reader = File.OpenText(file)) { while ((line = reader.ReadLine()) != null) { T newRecord = /* parse line */ yield return newRecord; } } }
Verbesserte LINQ-Syntax für Lesbarkeit
Um die Lesbarkeit noch weiter zu verbessern Es kann eine prägnante Syntax verwendet werden:
static IEnumerable<string> ReadFrom(string file) { string line; using (var reader = File.OpenText(file)) { while ((line = reader.ReadLine()) != null) { yield return line; } } } ... var typedSequence = from line in ReadFrom(path) let record = ParseLine(line) where record.Active // for example select record.Key;
Diese Version bietet eine verzögert ausgewertete Sequenz ohne Pufferung und ermöglicht nachfolgende Operationen wie Where und OrderBy muss effizient angewendet werden.
Zusätzliche Überlegungen
Beachten Sie, dass die Verwendung von OrderBy oder dem Standard-GroupBy die Daten im Speicher puffert. Für Gruppierungs- und Aggregationsaufgaben bietet PushLINQ spezielle Techniken zur effizienten Verarbeitung großer Datenmengen, ohne dass es zu Puffereinbußen kommt.
Das obige ist der detaillierte Inhalt vonWie kann LINQ eine Datei Zeile für Zeile in C# effizient lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!