IEnumerable i yield return w C# – jak przetworzyć milion rekordów bez crash’u serwera

Myślisz, że List to domyślny wybór do przechowywania i zwracania danych w C#? Jeśli Twoja aplikacja operuje na małych zbiorach, pewnie masz rację. Ale co jeśli musisz przetworzyć plik CSV o rozmiarze 5 GB albo pobrać z bazy danych milion rekordów? Jeden naiwny błąd wystarczy, żeby serwer produkcyjny dostał `OutOfMemoryException` i padł w środku nocy.