Proper Use of yield return in C#: Deferred Execution vs ToList() | CodeTrail