Lecture 11: Bridging Query and Programming Languages

LINQ: Language Integrated Query for .NET. Overview of Microsoft’s .NET framework. Application management. Support for multiple programming languages. Common intermediate language, types, runtime. Accessing SQL from Java and from C#. Aim of closer query/programming language integration. LINQ example using SQL-style syntax; its expansion into method calls. Programming language features added to C# in support of this: lambda expressions, extension methods, structural datatypes, anonymous datatypes, type inference, expression trees and metaprogramming.

More references and some of the background to LINQ below the fold. The next lecture is on F#: I’m looking for online guides to LINQ or F#, so if you find any that you think useful, then please put them in the comments. Thanks.


Browse the Visual Studio developer documentation. Start here:

and be sure to look at one of these:

Thursday’s lecture will be about language integration in F#. If you haven’t already programmed in F#, then find out about it. Some links:

There are a couple of F# books out: Expert F# and F# for Scientists. We have a copy of the latter in the library, and also online access to the full text. That link is through a proxy and, although it should work from anywhere, you may have to log in via EASE.


The .NET framework. There is a lot of information available on the Microsoft Developers Network; here are a few starting points.

Programming Languages in .NET. Some video interviews with the designers of .NET language support.

These are from Charlie Calvert’s Community Blog which is full of language development material from the .NET worldview.

LINQ. These references are slightly dated, as they come from the time when LINQ was a future feature of .NET; but they do explain what’s new and how it fits in to existing features.

The LINQ project home page.
Don Box, Anders Hejlsberg. LINQ: .NET Language-Integrated Query. Microsoft Developer Network, February 2007.

Overview article, with several examples of LINQ in use as well as details on the language extensions that support it.

Dinesh Kulkarni, Luca Bolognese, Matt Warren, Anders Hejlsberg, Kit George. LINQ to SQL: .NET Language-Integrated Query for Relational Data. Microsoft Developer Network, March 2007.

Detailed examination of LINQ implementation of SQL integration.

Research background. The LINQ system did not spring into life fully-formed: it draws on a considerable body of existing programming language research. Nor is it the only system to work with query and programming language integration. These are a couple of specific precursors.

The Cω programming language extends C# with novel concurrency and datatype constructions, including those suited for accessing relational and XML data.

The Kleisli Query System

The Kleisli project built a novel system for broad-scale data integration, using ideas like list and set-comprehension to provide a rich Collection Programming Language (CPL) for describing complex queries over multiple distributed databases.

The main application domain for Kleisli is bioinformatics, and the technology was commercialised in the DiscoveryHub data integration tool.

The following papers describe some of the programming language foundations of Kleisli, with examples taken from bioinformatics applications.

One Response to Lecture 11: Bridging Query and Programming Languages

  1. stark says:

    Another video: Anders Hejlsberg on The Future of C#, talking about language features in C# 4.0.