Heim > Backend-Entwicklung > C++ > Wie kann LINQ das zeilenweise Lesen von Dateien in C# verbessern?

Wie kann LINQ das zeilenweise Lesen von Dateien in C# verbessern?

DDD
Freigeben: 2025-01-01 07:25:10
Original
833 Leute haben es durchsucht

How Can LINQ Improve Line-by-Line File Reading in C#?

Dateien Zeile für Zeile in C# mit LINQ lesen

Beim Arbeiten mit Textdateien ist es oft notwendig, jede Zeile einzeln zu verarbeiten. C# bietet mehrere Möglichkeiten, dies zu erreichen, einschließlich der Verwendung eines StreamReader und des manuellen Lesens jeder Zeile.

Für eine verbesserte Effizienz und Lesbarkeit kann jedoch LINQ (Language INtegrated Query) ohne Leistungseinbußen genutzt werden. LINQ bietet eine prägnantere und ausdrucksstärkere Syntax für die Arbeit mit Daten.

Betrachten Sie zwei Beispielszenarien, in denen zeilenweises Lesen erforderlich ist:

Erstes Beispiel:

using (var file = System.IO.File.OpenText(_LstFilename))
{
    while (!file.EndOfStream)
    {
        String line = file.ReadLine();

        // Process line
    }
}
Nach dem Login kopieren

Zweitens Beispiel:

using (var file = System.IO.File.OpenText(datFile))
{
    Regex nameRegex = new Regex("IDENTIFY (.*)");

    while (!file.EndOfStream)
    {
        String line = file.ReadLine();

        // Process line
    }
}
Nach dem Login kopieren

LINQ-basierter Ansatz:

Um Dateien Zeile für Zeile mit LINQ zu lesen, können wir einen Iteratorblock verwenden, um einen benutzerdefinierten zu definieren Aufzählbare Sequenz:

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 Methode gibt ein IEnumerable-Objekt zurück, das jede Zeile nach Anforderung langsam auswertet, ohne Puffern der gesamten Datei im Speicher.

Wir können dann LINQ-Abfragen verwenden, um die Zeilen zu verarbeiten:

var lines = ReadFrom(path);

// Process lines using LINQ
Nach dem Login kopieren

Mit LINQ können wir Filter-, Sortier- und andere Vorgänge auf die Zeilensequenz anwenden Dadurch wird der Code effizienter und lesbarer. Beachten Sie, dass LINQ bei Verwendung von Vorgängen wie OrderBy oder GroupBy möglicherweise die Daten puffern muss, was sich möglicherweise auf die Leistung auswirkt.

Das obige ist der detaillierte Inhalt vonWie kann LINQ das zeilenweise Lesen von Dateien in C# verbessern?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage