C#: IEnumerable, yield return, and lazy evaluation | Hacker News Reader