Maison > développement back-end > C++ > Comment LINQ peut-il améliorer l'efficacité et la lisibilité lors de la lecture de fichiers texte volumineux en C# ?

Comment LINQ peut-il améliorer l'efficacité et la lisibilité lors de la lecture de fichiers texte volumineux en C# ?

Mary-Kate Olsen
Libérer: 2025-01-05 00:23:47
original
929 Les gens l'ont consulté

How Can LINQ Improve Efficiency and Readability When Reading Large Text Files in C#?

Lecture avancée de fichiers avec LINQ

Supposons que nous ayons deux fichiers texte, où chaque ligne représente un élément distinct à traiter. Notre objectif est d'explorer des méthodes efficaces et lisibles pour lire ces fichiers ligne par ligne en utilisant C#.

Approches actuelles

Actuellement, nous utilisons un StreamReader pour lire chaque ligne individuellement. . Bien que cette méthode soit simple, elle peut devenir inefficace pour les fichiers plus volumineux ou lorsque des lignes spécifiques doivent être sélectionnées.

Exploiter LINQ

LINQ fournit une approche puissante pour résoudre ce problème. problème :

static IEnumerable<SomeType> ReadFrom(string file) {
    string line;
    using(var reader = File.OpenText(file)) {
        while((line = reader.ReadLine()) != null) {
            SomeType newRecord = /* parse line */
            yield return newRecord;
        }
    }
}
Copier après la connexion

Cette méthode utilise un bloc itérateur pour implémenter un lecteur de ligne paresseux. En utilisant le mot clé rendement, il renvoie un enregistrement à la fois sans mettre en mémoire tampon l'intégralité du fichier.

Flexibilité améliorée

Pour résoudre le problème de consommation de mémoire, nous pouvons modifier le code légèrement :

static IEnumerable<string> ReadFrom(string file) {
    string line;
    using(var reader = File.OpenText(file)) {
        while((line = reader.ReadLine()) != null) {
            yield return line;
        }
    }
}
Copier après la connexion

Maintenant, cette méthode renvoie une séquence de chaînes sans mise en mémoire tampon. Nous pouvons ensuite utiliser des opérateurs LINQ comme Where et Select pour filtrer et traiter les lignes selon les besoins.

...
var typedSequence = from line in ReadFrom(path)
                    let record = ParseLine(line)
                    where record.Active // for example
                    select record.Key;
Copier après la connexion

Ce code utilise la méthode ReadFrom pour créer une séquence évaluée paresseusement, nous permettant d'effectuer des opérations complexes sans tenir le fichier entier en mémoire.

Conclusion

En utilisant LINQ, nous pouvons améliorer considérablement l'efficacité et la lisibilité de notre code de lecture de fichier. L'approche d'évaluation paresseuse évite une consommation inutile de mémoire, ce qui la rend idéale pour traiter des fichiers volumineux ou sélectionner des lignes spécifiques.

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