This question from one of my MSDN sessions has stumped me for a while. I know the new language features in Visual Studio 2008 (e.g. LINQ!) are compiler magic which ultimately spits out CLR 2.0 code – but what about the supporting assemblies? Hence… I parked it.
Then… I stumble across a solution. LINQBridge (from the author of the excellent LINQPad) is a small 60KB assembly that when combined with the multi-targeting capabilities of Visual Studio 2008 gives the ability to write code which does LINQ to Objects (not XML or SQL) but runs fine on a machine with just the .NET Framework 2.0 installed. Very clever.