Functional Programming has the potential to reduce program line count by 20-50%, reduce bugs and increase robustness, and move us in the direction of taking advantage of multiple core CPUs. But perhaps due to the learning curve, and unfamiliarity, many developers are not taking advantage of the potential that LINQ and FP offers. This is a tutorial on using FP techniques for constructing LINQ queries. It is certainly possible to write simple LINQ queries without using these techniques, but as soon as you start writing more complicated queries, you need to understand these techniques.
Learning about functional programming made me a better and faster coder. The tutorial is written in a granular fashion so that if you already understand a topic, you can skip it. Feel free, for instance, if you have firm grasp on lambda expressions and extension methods to skip those topics. At the end of each topic is a link to the next, or you can navigate using the table of contents.