Eh bien, vous allez ont à boucle à travers chaque ligne, certainement. Il n'y a vraiment pas moyen de contourner cela. Vous pouvez ensuite utiliser LINQ pour les compter raisonnablement facilement:
var query = File.ReadLines("file.txt")
.Select(line => new { Y = line.EndsWith("Y ") ? 1 : 0,
N = line.EndsWith("N ") ? 1 : 0 })
.Aggregate(new { Y = 0, N = 0 },
(current, next) => new { Y = current.Y + next.Y,
N = current.N + next.N });
var yCount = query.Y;
var nCount = query.N;
S'il n'y a pas exactement un espace après le Y/N, changez d'utiliser à la place Trim()
... par exemple:
var query = File.ReadLines("file.txt")
.Select(line => line.Trim())
.Select(line => new { Y = line.EndsWith("Y") ? 1 : 0,
N = line.EndsWith("N") ? 1 : 0 })
// remainder of code as before
Ceci parcourra le fichier entier une seule fois, en comptant au fur et à mesure. Certes, il crée un lot d'objets, mais le GC est plutôt bon. Il ne pas tirer le fichier entier en mémoire, ou le lire deux fois.
Qu'avez-vous essayé? Quels problèmes éprouvez-vous? Et bien sûr, ** quelle est votre question **? – Oded
Qu'est-ce qu'un fichier texte C#? Est-ce différent d'un fichier texte normal? –