Leyendo un archivo línea por línea en C #

Estoy tratando de leer algunos archivos de texto, donde es necesario procesar cada línea. En este momento solo uso un StreamReader y luego leo cada línea individualmente.

Me pregunto si hay una forma más eficiente (en términos de LoC y legibilidad) para hacer esto usando LINQ sin comprometer la eficiencia operativa. Los ejemplos que he visto implican cargar todo el archivo en la memoria y luego procesarlo. En este caso, sin embargo, no creo que sea muy eficiente. En el primer ejemplo, los archivos pueden llegar a aproximadamente 50k, y en el segundo ejemplo, no es necesario leer todas las líneas del archivo (los tamaños suelen ser <10k).

Se podría argumentar que hoy en día no importa mucho para estos archivos pequeños, sin embargo, creo que ese tipo de enfoque conduce a un código ineficiente.

Primer ejemplo:

// 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 ejemplo:

// 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;
        }
    }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta