Czytanie pliku wiersz po wierszu w C #

Próbuję odczytać niektóre pliki tekstowe, w których każda linia musi zostać przetworzona. W tej chwili używam StreamReadera, a następnie czytam każdą linię indywidualnie.

Zastanawiam się, czy istnieje skuteczniejszy sposób (w sensie LoC i czytelności) na zrobienie tego za pomocą LINQ bez pogorszenia wydajności operacyjnej. Przykłady, które widziałem, obejmują ładowanie całego pliku do pamięci, a następnie przetwarzanie go. W tym przypadku jednak nie wierzę, że byłoby to bardzo skuteczne. W pierwszym przykładzie pliki mogą uzyskać do około 50k, aw drugim przykładzie nie wszystkie linie pliku muszą być odczytywane (rozmiary są zazwyczaj <10k).

Można argumentować, że obecnie nie ma to większego znaczenia dla tych małych plików, jednak uważam, że takie podejście prowadzi do nieefektywnego kodu.

Pierwszy przykład:

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

Drugi przykład:

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