If you do not know who Erik is; he created Haskell which is a functional programming language and after some diversions set out to create LINQ out of a subset of principles that make up functional programming and its roots in mathematics.
He started by pointing out that LINQ is based on previous scientific work on stuff like list comprehensions, relational calculus and monad expressions. If you are familiar with all three, I applaud you because I wasn’t.
On a side note, I do have to mention something about the person Erik.
He presented in an almost ADHD type of fashion, wearing a t-shirt that could be how one experiences a bad LSD or acid trip. It kept everybody on their toes but he was, to me, at times also exhausting to try and follow everything he said. Let’s just say that he is a personality.
LINQ is designed to separate the data model from the query syntax. The query syntax provides three distinct features: filtering (e.g. x mod 2 = 0 or a WHERE clause), mapping (e.g. x * 2 or the field-list after a SELECT statement), and aggregation (e.g. Sum function). Any data model can provide these features through something called extension methods which kind of resemble, to me, the Decorator pattern. All this is based on the IEnumerable interface and some “little” adjustments that had to be made in the .Net CLR.
Since LINQ is sort of a subset of functional programming, there is support for something called lamba expressions. It is way out of scope for this blogger to dive into that area, but remember that Google (and Wikipedia) are your friend for subjective information.
All in all, a very riveting presentation.
Addendum: all the speakers in the .Net track, only Kevin Jones was there hosted by Ian's laptop. From left to right: Ian Griffith, Ted Neward, Christian Weyer, and Erik Meijer.