Maison >développement back-end >C++ >Comment LINQ et les itérateurs peuvent-ils lire efficacement un fichier ligne par ligne en C# ?
Lorsque vous travaillez avec des fichiers texte, il est souvent nécessaire de traiter chaque ligne individuellement. C# propose plusieurs approches pour cette tâche, mais LINQ peut fournir une solution plus concise et efficace sans compromettre l'efficacité opérationnelle.
L'approche classique implique l'utilisation d'un StreamReader. Cependant, LINQ offre une alternative puissante qui permet un code plus flexible et plus lisible. Les itérateurs peuvent être utilisés pour créer une séquence de lignes, qui peuvent ensuite être traitées en streaming, évitant ainsi d'avoir à charger l'intégralité du fichier en mémoire.
Voici un exemple d'une telle expression LINQ basée sur un itérateur :
static IEnumerable<string> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { yield return line; } } }
Cette fonction renvoie une séquence de lignes lues à partir du fichier spécifié. Chaque ligne est générée au fur et à mesure de sa lecture, ce qui permet une évaluation paresseuse et un traitement efficace.
Pour traiter les lignes davantage, vous pouvez utiliser des méthodes LINQ telles que Where, Select et Aggregate pour effectuer le filtrage, le mappage et l'agrégation. opérations sans avoir besoin d’itération explicite. Par exemple :
var typedSequence = from line in ReadFrom(path) let record = ParseLine(line) where record.Active // for example select record.Key;
Dans cet exemple, la fonction ReadFrom est utilisée pour créer une séquence de lignes. Chaque ligne est ensuite analysée dans un enregistrement de données à l'aide de la fonction ParseLine. La clause Where filtre les enregistrements inactifs et la clause Select projette une valeur clé de chaque enregistrement restant.
En résumé, LINQ et les itérateurs peuvent être utilisés pour créer un code de lecture de fichier ligne par ligne efficace et maintenable dans C#. En tirant parti des capacités des itérateurs, vous pouvez éviter la surcharge liée au chargement de l'intégralité du fichier en mémoire et rationaliser le processus de traitement des fichiers.
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!