What a coincidence, I am just going through the C# in Depth chapter about iterators and this pops up on the first page of HN :D.
Jon Skeet also has a (now old) blog series called edu-linq that basically implements linq just using generator blocks and it really makes you think about stuff like validation of arguments vs actually doing the operation. It’s very interesting. A couple of caveats in there.