Thursday, November 08, 2007

VB Linq Cookbook

The VB Team has a great series named Linq Cookbook. In it they show some examples of Linq usage in VB that look great.

Entries so far:

linq cookbook recipe 1 change the font for all labels on a windows form

linq cookbook recipe 2 find all capitalized words in a phrase and sort by length then alphabetically

linq cookbook recipe 3 find all the prime numbers in a given range

linq cookbook recipe 4 find all complex types in a given assembly

linq cookbook recipe 5 concatenating the selected strings from a checkedlistbox

linq cookbook recipe 6 your first linq application using northwind

linq cookbook recipe 7 selecting pages of data from northwind

linq cookbook recipe 8 querying xml using linq

linq cookbook recipe 9 dynamic sort order

linq cookbook recipe 10 pre compiling queries for performance

And apparently VB support for Linq seems superior to C#. I had already read about it (VisualBasic Envy), but the XML syntax seems much terser and cleaner. Just compare:

Dim itemList1 = 
      From item In rss.<rss>.<channel>.<item> _
          Where item.<desc>.Value.Contains("LINQ") Or _
               item.<title>.Value.Contains("LINQ")

http://blogs.msdn.com/vbteam/archive/2007/10/01/linq-cookbook-recipe-8-querying-xml-using-linq.aspx

to

var query = from c in xElement.Descendants("book")
     where double.Parse(c.Element("price").Value) < 10
     select new {
            author = c.Element("author").Value,
            title =   c.Element("title").Value
    };

http://blog.adrianroman.ro/post/C-30-Querying-XML-in-C-with-LINQ-to-XML.aspx

 

Update:

Just found out an example of Linq usage inside Excel (with VSTO). The video is available at: How Do I: Use LINQ Against Excel Ranges?

Looking at the example, two things are missing (that could be implemented):

  • Turning an excel range into a list of objects (better yet, mapping the columns into fields of a supplied class)
  • "Dumping" the results starting on a specified cell 

Other than that, just another great example of Linq usage.

 

Technorati tags: , , ,

2 comments:

Mário Romano said...

I'm not sure about the better support for LINQ on VB. In my opinion VB has chosen to change it's grammar in order to support some kind of XML embedding, as C# has chosen not to "pollute" the language with an XML specific detail.

André Cardoso said...

I disagree with the "pollute" part.
What is Linq, if not a change in .NET languages grammar to better support data querying?
I think the approach is much cleaner (as is Linq), than "polluting" the code with implementation details :)

If we chose to stick with "non polluting" changes, we'd still be using .NET strings ;)
Or fall into the Java trap - don't make any breaking changes or evolutions because the language is mature/stagant (I know Java is planning to incorporate some changes, but they still seem very afraid of any major change - see generics, for example).

This comment is almost longer than my original post. Better stop now.