Tijdens de PDC 2005 is officieel aangekondigd dat Microsoft bezig is met een set aan extensies op het .NET Framework die het mogelijk maken om database queries te embedden in een ontwikkeltaal. Stel je het volgende stukje code voor:
Dim custs() As Customer = ...
Dim waCusts = Select c.Name, c.City From c In custs Where c.State = “WA”
Het project LINQ moet er voor zorgen dat .NET talen in staat zijn met deze code om te gaan. Begrijpelijk genoeg zijn de ontwikkelteams van VB.NET en C# hier al mee bezig. De kern van LINQ is een set van API patterns. Patterns, en niet classes of interfaces, omdat het de bedoeling is zo flexibel mogelijk te zijn in het query-en van verschillende soorten data. Het is dus niet afhankelijk van een bepaald objectenmodel of de implementatie van een interface. De patterns bepalen de mogelijkheden van de queries die kunnen worden losgelaten op een object, zoals select, where, order, group by, etc.
Microsoft gaat zelf drie implementaties maken van de LINQ API patterns voor de meest voor de handliggende data structuren: relationeel, object en XML. Eerst worden hiervoor de standaard query operators geïmplementeerd en beschikbaar via de IEnumberable(Of T) interface. Dit is de basis collectie-interface in .NET en deze wordt zodoende 'queryable'. Ook gaat het project een component "DLinq" maken voor de mapping naar relationele data (ObjectSpaces anyone?). Frans Bouma verbaast zich over de verwachte implementatie van dit component. Tot slot komt er ook een "XLinq" component beschikbaar met voor XML.
Microsoft introduceert opnieuw een optie. Kijken we bijvoorbeeld naar SQL Server 2005, dan wordt breed uitgemeten hoe de CLR gehost wordt in het RDBMS. Hoe je dus C# code kunt gebruiken in een stored procedure. Met LINQ kan je weer select- en update statements maken in C#. Volgt iemand het nog?
Een speciale pagina op de MSDN website biedt links naar aanvullende informatie over LINQ. Klik maar niet op de FAQ, want die wijst gewoon naar de startpagina van MSDN.