Maison >développement back-end >C++ >Comment LINQ peut-il lire efficacement un fichier ligne par ligne en C# ?

Comment LINQ peut-il lire efficacement un fichier ligne par ligne en C# ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-01 12:07:10554parcourir

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

Lecture d'un fichier ligne par ligne en C# à l'aide de LINQ

Lorsque vous traitez des fichiers texte en C#, il est essentiel de lire chaque ligne efficacement. Bien que l'utilisation d'un StreamReader et l'itération sur les lignes individuellement soient une approche courante, explorer des méthodes plus efficaces à l'aide de LINQ est un effort louable.

Implémentation efficace de LINQ

Pour atteindre cette efficacité , un lecteur de ligne basé sur LINQ peut être implémenté à l'aide d'un bloc itérateur. Cette approche évite de charger l'intégralité du fichier en mémoire, garantissant ainsi l'efficacité opérationnelle pour les fichiers volumineux :

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;
        }
    }
}

Syntaxe LINQ améliorée pour la lisibilité

Pour améliorer la lisibilité, une syntaxe encore plus une syntaxe concise peut être utilisée :

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;  

Cette version fournit une séquence évaluée paresseusement sans mise en mémoire tampon, permettant des opérations ultérieures telles que Where et OrderBy doit être appliqué efficacement.

Considérations supplémentaires

Notez que l'utilisation de OrderBy ou du GroupBy standard mettra en mémoire tampon les données en mémoire. Pour les tâches de regroupement et d'agrégation, PushLINQ propose des techniques spécialisées pour gérer efficacement de grands ensembles de données sans encourir de pénalités de mise en mémoire tampon.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn