Heim > Backend-Entwicklung > C++ > Wie können LINQ und Iteratoren eine Datei Zeile für Zeile in C# effizient lesen?

Wie können LINQ und Iteratoren eine Datei Zeile für Zeile in C# effizient lesen?

Susan Sarandon
Freigeben: 2025-01-04 17:25:40
Original
572 Leute haben es durchsucht

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

Eine Datei Zeile für Zeile in C# mit LINQ und Iteratoren lesen

Beim Arbeiten mit Textdateien ist es oft notwendig, jede Zeile einzeln zu verarbeiten. C# bietet mehrere Ansätze für diese Aufgabe, aber LINQ kann eine präzisere und effizientere Lösung bieten, ohne die betriebliche Effizienz zu beeinträchtigen.

Der klassische Ansatz beinhaltet die Verwendung eines StreamReader. Allerdings bietet LINQ eine leistungsstarke Alternative, die flexibleren und lesbareren Code ermöglicht. Iteratoren können verwendet werden, um eine Folge von Zeilen zu erstellen, die dann im Streaming-Modus verarbeitet werden können, sodass nicht die gesamte Datei in den Speicher geladen werden muss.

Hier ist ein Beispiel für einen solchen Iterator-basierten LINQ-Ausdruck :

static IEnumerable<string> ReadFrom(string file) {
    string line;
    using(var reader = File.OpenText(file)) {
        while((line = reader.ReadLine()) != null) {
            yield return line;
        }
    }
}
Nach dem Login kopieren

Diese Funktion gibt eine Folge von Zeilen zurück, die aus der angegebenen Datei gelesen wurden. Jede Zeile wird beim Lesen ausgegeben, was eine verzögerte Auswertung und effiziente Verarbeitung ermöglicht.

Um die Zeilen weiter zu verarbeiten, können Sie LINQ-Methoden wie Where, Select und Aggregate verwenden, um Filterung, Zuordnung und Aggregation durchzuführen Operationen ohne die Notwendigkeit einer expliziten Iteration. Zum Beispiel:

var typedSequence = from line in ReadFrom(path)
                    let record = ParseLine(line)
                    where record.Active // for example
                    select record.Key;
Nach dem Login kopieren

In diesem Beispiel wird die ReadFrom-Funktion verwendet, um eine Folge von Zeilen zu erstellen. Jede Zeile wird dann mithilfe der ParseLine-Funktion in einen Datensatz geparst. Die Where-Klausel filtert inaktive Datensätze heraus und die Select-Klausel projiziert einen Schlüsselwert aus jedem verbleibenden Datensatz.

Zusammenfassend lässt sich sagen, dass LINQ und Iteratoren verwendet werden können, um effizienten und wartbaren Code zum zeilenweisen Einlesen von Dateien zu erstellen C#. Durch die Nutzung der Funktionen von Iteratoren können Sie den Aufwand für das Laden der gesamten Datei in den Speicher vermeiden und den Dateiverarbeitungsprozess optimieren.

Das obige ist der detaillierte Inhalt vonWie können LINQ und Iteratoren 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