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
Libérer: 2025-01-01 12:07:10
original
524 Les gens l'ont consulté

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;
        }
    }
}
Copier après la connexion

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;  
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal