The LINQ Project is a codename for a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with native language syntax for queries and provides class libraries to take advantage of these capabilities.
The query comprehension syntax in Visual Basic and C# is translated by the compiler into a set of general-purpose operators that encode traversal, filtering, grouping, sorting, and projection of any form of collection (tables, arrays, lists) containing any form of data (rows, XML nodes, objects).
Many of the innovations in LINQ, type inference, anonymous types, object and collection initializers, extension methods, lambda expressions and meta-programming using expression trees, have their roots in functional programming languages, in particular the purely functional language Haskell. We will use the opportunity to give a gentle introduction to the functional style of programming using Haskell. All concepts such as Monads, type classes, higher-order functions, algebraic data types are explained in an example driven way.
The second half of the tutorial will drill into LINQ, the underlying language support in Visual Basic and C# 3.0 and the domain specific frameworks DLinq for dealing with relational data and XLinq for dealing with XML data.