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!