Como ler as últimas "n" linhas do arquivo de log

precisa de um trecho de código que leia as últimas "n linhas" de um arquivo de log. Eu vim com o seguinte código da net.I sou meio novo para C sharp. Como o arquivo de log pode ser muito grande, desejo evitar a sobrecarga de ler o arquivo inteiro. Alguém pode sugerir algum aprimoramento de desempenho. Eurealmente não quero ler cada personagem e mude de posição.

   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();

questionAnswers(7)

yourAnswerToTheQuestion