Comment lire les dernières lignes "n" du fichier journal

besoin d'un extrait de code qui permettrait de lire le dernier "n" premières lignes d'un fichier journal. Je suis venu avec le code suivant à partir du net.Je suis un peu nouveau pour C sharp. Depuis le fichier journal peut être
assez grand, je veux éviter la surcharge de la lecture de la totalité du fichier.Quelqu'un peut-il suggérer toute amélioration de la performance. Je n'ont pas vraiment envie de lire chaque caractère et de changer de position.

   var reader = new StreamReader(filePath, Encoding.ASCII);
            reader.BaseStream.Seek(0, SeekOrigin.End);
            var count = 0;
            while (count <= tailCount)
            {
                if (reader.BaseStream.Position <= 0) break;
                reader.BaseStream.Position--;
                int c = reader.Read();
                if (reader.BaseStream.Position <= 0) break;
                reader.BaseStream.Position--;
                if (c == '\n')
                {
                    ++count;
                }
            }

            var str = reader.ReadToEnd();

source d'informationauteur frictionlesspulley