Recently I've noticed an IO pattern emerging combining yield and linq; a powerful and efficient mechanism to read data.
Check the following code: We safely open a file (with the using statement), and yield the results with a loop.
This simple (and beautiful) code allows us to treat a file like an array of strings - which becomes very powerful when coupled with linq.
I'm sure this same pattern could also be applied to other data retrieval methods, eg algorithm calculation (prime numbers, Fibonacci, etc), network communication (message queue) and even as an abstraction over asynchronous data methods.
Yield provides a lazy enumeration (doesn't execute unless needed) so the solution is generic and efficient - I like it.