Heim > Backend-Entwicklung > C++ > Wie kann LINQ eine Datei Zeile für Zeile in C# effizient lesen?

Wie kann LINQ eine Datei Zeile für Zeile in C# effizient lesen?

Mary-Kate Olsen
Freigeben: 2025-01-01 12:07:10
Original
524 Leute haben es durchsucht

How Can LINQ Efficiently Read a File Line by Line in C#?

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;
        }
    }
}
Nach dem Login kopieren

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;  
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage