It seems the LINQ guys have done a great job of optimization inside of the LINQ namespace (System.Linq).
http://blogs.msdn.com/jomo_fisher/archive/2007/03/28/fast-switching-with-linq.aspx
If you take a look at this post, then subsequent comments and a response from the author, you'll see that the System.Query.Func dynamic delegate done in LINQ gave the same performace as a C++ version in the previous comment.
Not that scientific, but curious.
However, note improved performance of 900% comparing the System.Query.Func query done in comparison to the Dictionairy lookup - that alone gives anyone building systems a need to pause and take a look at LINQ.
LINQ is definately a killer of the .NET 3.5 stack at this point.