Efficiency is achieved not just by running things faster, but by avoiding things that shouldn't be done in the first place. Lazy evaluations are a core feature of many functional programming languages.
Your code can benefit from lazy evaluations with lambda expressions and, more so, with the power of built in libraries. In this presentation, we'll start with a discussion of lazy evaluations, with short examples from Haskell and a few other languages. Then we'll dive into C# to see how we can achieve similar benefits using lambdas and the Stream API.