In the How Can I Expose Only a Fragment of IList<> question one of the answers had the following code snippet:
IEnumerable FilteredList() {
Yield has two great uses,
It helps to provide custom iteration without creating temp collections.
It helps to do stateful iteration.
In order to explain above two points more demonstratively, I have created a simple video you can watch it here