This was inspired by a conversation I was having with @leeoades & @hamishdotnet at work earlier this week, we were discussing the use of Yield keyword to short-cut method execution. Lee has a great post about sequences here . I wanted to get down how my thinking about the Yield keyword has now changed. Historically I've always thought about using the yield when I'm defining a custom enumerator method, something like GetFooEnumerator - typically I'd have placed this on some kind of model object to allow the easy iteration of some child model instances. Lee was saying why not use yield where ever you have the following usage pattern: 1: public IEnumerable< int > Range( int start, int end) 2: { 3: var numbers = new List< int >(); 4: for ( var i = start; i < end; i++) 5: { 6: // Do some business logic here... 7: numbers.Add(i); 8: } 9: 10: return numbers...