Lendo um arquivo linha por linha em c #

Eu estou tentando ler alguns arquivos de texto, onde cada linha precisa ser processada. No momento, estou usando apenas um StreamReader e, em seguida, lendo cada linha individualmente.

Eu estou querendo saber se existe uma maneira mais eficiente (em termos de LoC e legibilidade) para fazer isso usando o LINQ sem comprometer a eficiência operacional. Os exemplos que vi envolvem carregar o arquivo inteiro na memória e, em seguida, processá-lo. Neste caso, no entanto, não acredito que seja muito eficiente. No primeiro exemplo, os arquivos podem chegar a cerca de 50k, e no segundo exemplo, nem todas as linhas do arquivo precisam ser lidas (os tamanhos são normalmente <10k).

Você poderia argumentar que hoje em dia isso não importa realmente para esses arquivos pequenos, mas acredito que esse tipo de abordagem leva a um código ineficiente.

Primeiro exemplo:

// Open file
using(var file = System.IO.File.OpenText(_LstFilename))
{
    // Read file
    while (!file.EndOfStream)
    {
        String line = file.ReadLine();

        // Ignore empty lines
        if (line.Length > 0)
        {
            // Create addon
            T addon = new T();
            addon.Load(line, _BaseDir);

            // Add to collection
            collection.Add(addon);
        }
    }
}

Segundo exemplo:

// Open file
using (var file = System.IO.File.OpenText(datFile))
{
    // Compile regexs
    Regex nameRegex = new Regex("IDENTIFY (.*)");

    while (!file.EndOfStream)
    {
        String line = file.ReadLine();

        // Check name
        Match m = nameRegex.Match(line);
        if (m.Success)
        {
            _Name = m.Groups[1].Value;

            // Remove me when other values are read
            break;
        }
    }
}

questionAnswers(4)

yourAnswerToTheQuestion