Jaa


LINQ, BB’s and the HTTP’ness

The Language Integrated Query (LINQ) demo during the PDC demo was exciting. There was applause all around whenever different products were shown and different speakers were introduced, yet when the LINQ demo was shown there was a lot of talk within the crowd, oohs and aahs, and a bunch of OMG-this-is-cool’s. The attendee sitting next to me pulled out his notepad and started writing down everything he saw. After two hours of keynote before it, it was the only thing worthy to write down.

 

Anders gave the demo along with Don Box as part of a large multi-technology demo showing off the LINQ project, Indigo, Atlas and Avalon. The LINQ part was first and formed the foundation of the rest of the demo. The demo was written using the new preview version of the C# 3.0 compiler and an object-relational API we refer to as D-LINQ, both of which I’ve been working on for the last two years. Similar language features that enable queries in C# will eventually be in VB as well, or BB as Anders was heard to call it by the automatic voice to text translator overlaid on the keynote’s projection screen. Don’t you just love technology?

 

Anders had Don (his code monkey) write a query against the framework to find all the processes with a working set greater than 4 MB. The code looked something like this.

 

 

var q = from p in Process.GetProcesses()

        where p.WorkingSet > 1024 * 1024 * 4

        select new {p.ProcessName, p.WorkingSet};

foreach(var p in q) {

    Console.WriteLine("{0,-30} {1}", p.ProcessName, p.WorkingSet);

}

 

 

The new C# 3.0 language has a construct known as a query expression. It looks a little bit like SQL yet not exactly. The select clause comes at the end. It written this way so the ‘range variables’ are specified up front making it possible for intellisense to aid you as you type. The select clause specifies a single expression, however you can use a new language feature known as anonymous type initializers (show in this example) to project the results into a new shape.

 

After the queries were written, Anders turned the floor back over to Don who with the help of Chris Anderson went off to turn the application into a web service. At this point Don muttered something about the protocol layer, noting its HTTP’ness. That’s when I knew I had a blog post.

 

Anyway, I’m busy working at the PDC, no time to explain more. Check out the LINQ online website for more details. Download the preview compiler and the whitepapers. There’s also a download for the VB 9.0 preview with a bunch of XML integration. Check that out too. J

 

Matt

Comments

  • Anonymous
    September 13, 2005
    I’ve been catching up on all the news from the PDC today (I’m not there). It’s a bit of a shame all of...
  • Anonymous
    September 15, 2005
    After the declaration of C# 3.0 I went ahead and installed the PDC bits. After reading through the language...
  • Anonymous
    September 15, 2005
    After the declaration of C# 3.0 I went ahead and installed the PDC bits. After reading through the language...
  • Anonymous
    September 15, 2005
    After the declaration of C# 3.0 I went ahead and installed the PDC bits. After reading through the language...
  • Anonymous
    September 16, 2005
    This year's PDC is now officially over. I changed the flair on my blog. The hallways in the Convention...