<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0"><channel><title>Wooley's Wonderings</title><link>http://www.devauthority.com/blogs/jwooley/default.aspx</link><description>Insights and observations about VB and .Net technologies. Here we focus on Language Integrated Query (LINQ) which is being featured in the next version of Visual Studio 2008 (formerly known as "Orcas").</description><dc:language>en-US</dc:language><generator>CommunityServer 2.0 (Build: 60217.2664)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WooleysWonderings" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="wooleyswonderings" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">WooleysWonderings</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item><title>LINQ in Action going to press</title><link>http://www.devauthority.com/blogs/jwooley/archive/2008/01/21/114615.aspx</link><pubDate>Mon, 21 Jan 2008 08:16:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:114615</guid><dc:creator>jwooley</dc:creator><slash:comments>1</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/114615.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=114615</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/114615.aspx</wfw:comment><description>&lt;P&gt;At long last, the process of doing my first book is coming to a close. I started this project last March. Through the process we had to revisit our work numerous times, including each time a new CTP or Beta drop came. For me, 10 months, and Fabrice 2 years later, we found out this week that the book is going to press.&lt;/P&gt;
&lt;P&gt;What does this mean for you, if you purchased the &lt;A href="http://www.manning.com/affiliate/idevaffiliate.php?id=263_74"&gt;eBook&lt;/A&gt;, the final version is available now. Additionally, the &lt;A href="http://linqinaction.net/files/folders/linqinaction/entry1952.aspx"&gt;samples are available online&lt;/A&gt;&amp;nbsp;in both C# and VB. We are also making three chapters available for free if you are considering the book, but not sure yet. &lt;/P&gt;
&lt;P&gt;If you purchase the hard copy from Manning, we understand that it should be in around the first of February. This should mean that it will be shipping from the online outlets, like &lt;A href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=woolswond-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1933988169"&gt;Amazon&lt;/A&gt; by the middle of February.&lt;/P&gt;
&lt;P&gt;I hope you find the book as rewarding to read as it did for us to write.&lt;/P&gt;
&lt;P&gt;crossposted from &lt;A href="http://www.thinqlinq.com"&gt;www.thinqlinq.com&lt;/A&gt; &lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=114615" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=ifTABkYlR70:SIHHl6jbZls:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=ifTABkYlR70:SIHHl6jbZls:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=ifTABkYlR70:SIHHl6jbZls:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=ifTABkYlR70:SIHHl6jbZls:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/ifTABkYlR70" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category></item><item><title>Annoucing ThinqLinq.com</title><link>http://www.devauthority.com/blogs/jwooley/archive/2008/01/10/114517.aspx</link><pubDate>Thu, 10 Jan 2008 07:46:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:114517</guid><dc:creator>jwooley</dc:creator><slash:comments>2</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/114517.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=114517</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/114517.aspx</wfw:comment><description>&lt;P&gt;You may have seen me present it at a speaking engagement. You may have watched the &lt;A href="http://aspnetpodcast.com/CS11/blogs/asp.net_podcast/archive/2007/06/28/asp-net-podcast-show-95-jim-wooley-on-linq-part-i-video-and-audio.aspx"&gt;podcasts&lt;/A&gt;. You may have even &lt;A href="http://www.thinqlinq.com/Downloads/ThinqLinqRtm.zip"&gt;downloaded the sample application&lt;/A&gt;. Now you can see it in action. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.thinqlinq.com"&gt;&lt;STRONG&gt;ThinqLinq.com&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; is now live.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The site was designed completely in VB with LINQ as the data access mechanism.&amp;nbsp;The base application was built in 2 hours from not knowing RSS to being able to import a RSS feed, displaying it on a form and producing a new feed from the imported data. The site is a testimate to the power of LINQ and the RAD capabilities that it brings.&amp;nbsp;Head on over to the site and check it out.&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=114517" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=hPrypqiaC7Q:Mpzxn6UcUsU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=hPrypqiaC7Q:Mpzxn6UcUsU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=hPrypqiaC7Q:Mpzxn6UcUsU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=hPrypqiaC7Q:Mpzxn6UcUsU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/hPrypqiaC7Q" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1213.aspx">VB DevCenter</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>LINQ In Action Samples online</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/12/17/112328.aspx</link><pubDate>Mon, 17 Dec 2007 16:41:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:112328</guid><dc:creator>jwooley</dc:creator><slash:comments>0</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/112328.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=112328</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/112328.aspx</wfw:comment><description>It's the time of the year when we put the finishing touches on our decorations. As Fabrice &lt;A href="http://linqinaction.net/blogs/main/archive/2007/12/12/linq-in-action-samples-source-code.aspx"&gt;annouced&lt;/A&gt;, we are in the same mode with our book. The text is almost ready, but you won't be able to get the hard copy under your tree this year unfortunately. If you can't wait, you can &lt;A href="http://linqinaction.net/files/folders/linqinaction/entry1952.aspx"&gt;download the samples&lt;/A&gt;&amp;nbsp;in both C# and VB&amp;nbsp;now. We'll let you know when the book starts shipping. If you don't want to wait, you can &lt;A href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=woolswond-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1933988169"&gt;pre-order it through Amazon&lt;/A&gt;, or purchase the ebook/print combo &lt;A href="http://www.manning.com/affiliate/idevaffiliate.php?id=263_74"&gt;directly through Manning&lt;/A&gt;.&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=112328" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=M95iLNUAjHk:v6szKiWsSjA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=M95iLNUAjHk:v6szKiWsSjA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=M95iLNUAjHk:v6szKiWsSjA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=M95iLNUAjHk:v6szKiWsSjA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/M95iLNUAjHk" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category></item><item><title>More on VS 2008 breaking changes</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/12/03/106673.aspx</link><pubDate>Mon, 03 Dec 2007 05:49:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:106673</guid><dc:creator>jwooley</dc:creator><slash:comments>2</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/106673.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=106673</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/106673.aspx</wfw:comment><description>&lt;P&gt;In addition to the items I mentioned in my previous &lt;A HREF="/blogs/jwooley/archive/2007/11/20/101099.aspx"&gt;Beta 2 - RTM breaking change list&lt;/A&gt;, I found a link on the &lt;A href="http://msdn2.microsoft.com/en-us/bb330936.aspx"&gt;VS 2008 samples page&lt;/A&gt; that a whitepaper has been issued on this. Download the whitepaper at this link: &lt;A href="http://download.microsoft.com/download/d/7/e/d7eeb256-5789-411c-a367-c9fda05c2b1c/LINQ_to_SQL_Beta_2_to_RTM_Breaking_Changes.docx"&gt;http://download.microsoft.com/download/d/7/e/d7eeb256-5789-411c-a367-c9fda05c2b1c/LINQ_to_SQL_Beta_2_to_RTM_Breaking_Changes.docx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;In addition, there is a whitepaper specific to breaking changes between VB 2005 and VB 2008 available &lt;A href="http://download.microsoft.com/download/d/7/e/d7eeb256-5789-411c-a367-c9fda05c2b1c/Visual_Basic_and_CSharp_Breaking_Changes_from_Visual_Studio_2005_to_Visual_Studio_2008.docx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#6464b9 size=2&gt;Technorati tags:&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=3&gt; &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/vb" rel=tag&gt;&lt;FONT size=3&gt;&lt;FONT color=#6464b9&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=vb"&gt;&lt;/FONT&gt;&lt;FONT color=#444433&gt;VB&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#6464b9 size=2&gt; &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/visual+studio" rel=tag&gt;&lt;FONT size=3&gt;&lt;FONT color=#6464b9 size=2&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=visual+studio"&gt;&lt;/FONT&gt;&lt;FONT color=#444433&gt;Visual Studio&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#6464b9 size=2&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=106673" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=qyjUuCT0CXM:JuAgBBHMQus:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=qyjUuCT0CXM:JuAgBBHMQus:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=qyjUuCT0CXM:JuAgBBHMQus:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=qyjUuCT0CXM:JuAgBBHMQus:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/qyjUuCT0CXM" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>Projecting XML from LINQ to SQL</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/11/20/101109.aspx</link><pubDate>Tue, 20 Nov 2007 07:08:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:101109</guid><dc:creator>jwooley</dc:creator><slash:comments>2</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/101109.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=101109</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/101109.aspx</wfw:comment><description>&lt;P&gt;Among the new cool features in Visual Studio 2008, one of the best may be the XML Literal support with VB 9 and LINQ. In my &lt;A href="/blogs/jwooley/archive/2007/11/20/101099.aspx"&gt;last post&lt;/A&gt;, I mentioned some changing features from the Beta to RTM. One that could easily be overlooked is a change to the way LINQ to SQL can now directly project into XML literals. &lt;/P&gt;
&lt;P&gt;Through the Beta cycle, there was an issue with projecting XML elements directly from a LINQ to SQL query. If you haven't seen LINQ to SQL with XML, here's a code sample that explains what I'm referring to:&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; dc &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;New&lt;/FONT&gt;&lt;FONT size=2&gt; LinqBlogDataContext&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Formulate the Query to get the last 10 blog posts&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; query = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;From&lt;/FONT&gt;&lt;FONT size=2&gt; p &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;In&lt;/FONT&gt;&lt;FONT size=2&gt; dc.PostItems _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Order&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;By&lt;/FONT&gt;&lt;FONT size=2&gt; p.PublicationDate &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Descending&lt;/FONT&gt;&lt;FONT size=2&gt; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Take&lt;/FONT&gt;&lt;FONT size=2&gt; 10 _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Select&lt;/FONT&gt;&lt;FONT size=2&gt; p).ToArray&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Create a root Site node with 10 child "item" nodes. &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Each node will be filled in through a LINQ query&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; fooShort = _&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;site&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;From&lt;/FONT&gt;&lt;FONT size=2&gt; p &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;In&lt;/FONT&gt;&lt;FONT size=2&gt; query _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Select&lt;/FONT&gt;&lt;FONT size=2&gt; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;item&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;title&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.Title &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;title&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;link&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;http://ThinqLinq.com/Default.aspx?Postid=&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.Id &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;link&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;pubDate&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.PublicationDate &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;pubDate&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;guid&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#b96464 size=2&gt;isPermaLink&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;=&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;false&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;42f563c8-34ea-4d01-bfe1-2047c2222a74:&amp;lt;%&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;p.Id &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;guid&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;description&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.Description &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;description&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;item&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;BR&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;site&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;In this code, I'm performing two queries. The first one sets up the LINQ to SQL query and pre-fetches the results into an Array. In the beta builds, if we didn't include the pre-fetching ToArray, the second query which&amp;nbsp;projects the results of the first into individual &amp;lt;item&amp;gt; nodes. What is the difference between these queries? The first query uses LINQ to SQL and projects results directly from the database. Because we pre-fetch the results into an array of objects, the resulting query only uses LINQ to Objects rather than the direct LINQ to SQL implementation.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;With the final RTM of Visual Studio, we no longer need to pre-fetch the results from the query. Instead, we can directly project our desired XML from the select statement without needing the intermediary step. Here is the revised code. Notice, we can now perform the same result with&amp;nbsp;a single LINQ query rather than two.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; fooNew = _&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;site&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;From&lt;/FONT&gt;&lt;FONT size=2&gt; p &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;In&lt;/FONT&gt;&lt;FONT size=2&gt; dc.PostItems _&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#6464b9&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Order&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;By&lt;/FONT&gt;&lt;FONT size=2&gt; p.PublicationDate &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Descending&lt;/FONT&gt;&lt;FONT size=2&gt; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Take&lt;/FONT&gt;&lt;FONT size=2&gt; 10 _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Select&lt;/FONT&gt;&lt;FONT size=2&gt; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;item&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;title&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.Title &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;title&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;link&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;http://ThinqLinq.com/Default.aspx?Postid=&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.Id &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;link&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;pubDate&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.PublicationDate &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;pubDate&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;guid&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#b96464 size=2&gt;isPermaLink&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;=&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;false&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;"&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;42f563c8-34ea-4d01-bfe1-2047c2222a74:&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.Id &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;guid&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;description&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;&amp;lt;%=&lt;/FONT&gt;&lt;FONT size=2&gt; p.Description &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;description&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;item&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#555555 size=2&gt;%&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646 size=2&gt;site&lt;/FONT&gt;&lt;FONT color=#6464b9 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;The result is more concise. You may find you want to continue separating your query definition from your XML creation in order to improve maintainability. If this is the case, simply keep the first code sample and remove the call to .ToArray. Because LINQ to SQL is composable, you can separate the queries into two code sets. When the query is evaluated, the two expressions will be combined into a single query to the database and the projection will continue to work.&lt;/P&gt;
&lt;P&gt;Enjoy working with VB 9 and XML. In my opinion it is one of the killer features of Visual Studio 2008. If you give it a try, I think you might find the same.&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#6464b9 size=2&gt;Technorati tags: &lt;A href="http://technorati.com/tag/linq" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=linq"&gt;&lt;FONT color=#444433&gt;linq&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;, &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/vb" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=vb"&gt;&lt;FONT color=#444433&gt;VB&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt; &lt;A href="http://technorati.com/tag/visual+studio" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=visual+studio"&gt;&lt;FONT color=#444433&gt;Visual Studio&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt; &lt;A href="http://technorati.com/tag/xml" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=xml"&gt;&lt;FONT color=#444433&gt;XML&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=101109" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=K3FA8z2N1eM:3K3jtmbvgaE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=K3FA8z2N1eM:3K3jtmbvgaE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=K3FA8z2N1eM:3K3jtmbvgaE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=K3FA8z2N1eM:3K3jtmbvgaE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/K3FA8z2N1eM" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1213.aspx">VB DevCenter</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>Visual Studio 2008 (Orcas) Changes from Beta 2 to RTM</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/11/20/101099.aspx</link><pubDate>Tue, 20 Nov 2007 06:53:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:101099</guid><dc:creator>jwooley</dc:creator><slash:comments>4</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/101099.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=101099</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/101099.aspx</wfw:comment><description>&lt;P&gt;I've just updated the ThinqLinq proof of concept site for the Visual Studio 2008 release that came out today. If you're following the sample application, or are looking for a sample VB 9 implementation of LINQ in a web site, check out the download at &lt;A href="/files/13/jwooley/entry101097.aspx"&gt;http://devauthority.com/files/13/jwooley/entry101097.aspx&lt;/A&gt;. In case you are interested, here are the changes that were necessary to move from Beta 2 to the RTM. (The first two items are repeats from my &lt;A href="/blogs/jwooley/archive/2007/11/19/100881.aspx"&gt;post earlier today&lt;/A&gt;).&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Open&amp;nbsp;the DBML file as XML and change the UTF encoding from 16 to 8. Otherwise the compiler will complain about the DBML file's format. The error you will likely see will be "Build failed due to validation errors in [MyFile.dbml].&amp;nbsp;Open the file and resolve the issues in the Error List, then try rebuilding the project." When you open the file, you won't see errors in the error list. Just change the encoding and you should be good.
&lt;LI&gt;Replace the Add methods with InsertOnSubmit. Likewise, change Remove to DeleteOnSubmit. You may be able to do a global search and replace on this, but be careful not to make changes to any IList object implementations, only LINQ to SQL ones. 
&lt;LI&gt;SyndicationFeed.Load removed the option to pass in a URI. Instead, I used SyndicationFeed.Load(New System.Xml.XmlTextReader(UrlString)). 
&lt;LI&gt;The SyndicationFeed's Item PublishDate property is changed to the new DateTimeOffset type rather than the simpler DateTime. As a result, get the date from the PublishDate.Date property. 
&lt;LI&gt;When projecting XML elements as part of a LINQ to SQL query, you no longer need to pre-fetch the results into an array. I'll make a&amp;nbsp;separate post on this item. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;That's all I've found so far. I've already updated both the ThinqLinq site and the&amp;nbsp;samples for&amp;nbsp;the upcoming &lt;A href="http://www.linqinaction.net"&gt;LINQ in Action&lt;/A&gt; book.&amp;nbsp;I'm sure I've missed something, but so far, the upgrade is relatively easy this time around. The IDE does appear to be running faster as well.&lt;/P&gt;
&lt;P&gt;Technorati tags: &lt;A href="http://technorati.com/tag/linq" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=linq"&gt;&lt;FONT color=#444433&gt;linq&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;, &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/orcas" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=orcas"&gt;&lt;FONT color=#444433&gt;orcas&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt; &lt;A href="http://technorati.com/tag/visual+studio" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=visual+studio"&gt;&lt;FONT color=#444433&gt;Visual Studio&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=101099" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=KPAIqFs51hQ:vIEnW_0PUYA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=KPAIqFs51hQ:vIEnW_0PUYA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=KPAIqFs51hQ:vIEnW_0PUYA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=KPAIqFs51hQ:vIEnW_0PUYA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/KPAIqFs51hQ" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>VS 2008 RTM and the .NET Framework 3.5 Shipped</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/11/19/100881.aspx</link><pubDate>Mon, 19 Nov 2007 19:09:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:100881</guid><dc:creator>jwooley</dc:creator><slash:comments>2</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/100881.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=100881</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/100881.aspx</wfw:comment><description>&lt;P&gt;It's offical, &lt;A href="http://blogs.msdn.com/somasegar/archive/2007/11/19/visual-studio-2008-and-net-framework-3-5-shipped.aspx"&gt;Soma annouced on his blog&lt;/A&gt; that the 3.5 .Net Framework along with Visual Studio 2008 have shipped. I have been excited by the things coming with this release since PDC 2005 and am glad to finally work the the official bits. I am aware of a couple breaking changes between the Beta 2 and RTM, and will try to keep you updated as I find more items.&lt;/P&gt;
&lt;P&gt;The biggest changes to be aware of in regards to LINQ to SQL are the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Open&amp;nbsp;the DBML file as XML and change the UTF encoding from 16 to 8. Otherwise the compiler will complain about the DBML file's format. 
&lt;LI&gt;Replace the Add methods with InsertOnSubmit. Likewise, change Remove to DeleteOnSubmit. You may be able to do a global search and replace on this, but be careful not to make changes to any IList object implementations, only LINQ to SQL ones.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;There are a couple other minor updates that may catch you off-guard. I'll update you once I've had a chance to play with the final bits.&lt;/P&gt;
&lt;P&gt;Technorati tags: &lt;A href="http://technorati.com/tag/linq" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=linq"&gt;&lt;FONT color=#444433&gt;linq&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;, &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/orcas" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=orcas"&gt;&lt;FONT color=#444433&gt;orcas&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt; &lt;A href="http://technorati.com/tag/visual+studio" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=visual+studio"&gt;&lt;FONT color=#444433&gt;Visual Studio&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=100881" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=tR2tyg9KAuM:1wNH7iavrQo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=tR2tyg9KAuM:1wNH7iavrQo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=tR2tyg9KAuM:1wNH7iavrQo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=tR2tyg9KAuM:1wNH7iavrQo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/tR2tyg9KAuM" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category></item><item><title>Feedburner access to Wooley's various Wonderings</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/11/09/96687.aspx</link><pubDate>Fri, 09 Nov 2007 23:24:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:96687</guid><dc:creator>jwooley</dc:creator><slash:comments>0</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/96687.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=96687</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/96687.aspx</wfw:comment><description>&lt;P&gt;I have set-up several feedburner syndication options for my postings for your enjoyment. Feel free to move your aggregator over to those versions of the feeds and show me how much you digg what I have to say. Here's the links for you:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://feeds.feedburner.com/wooleyswonderings"&gt;Wooley's Wonderings&lt;/A&gt;: My main feed&lt;BR&gt;&lt;A href="http://feeds.feedburner.com/JimsSamplesAndPresentations"&gt;Jim's Samples and Presentations&lt;/A&gt;: My downloads and sample applications from my presentations. Subscribe here to get updates whenever I add new samples.&lt;/P&gt;
&lt;P&gt;I have a bunch of things I want to discuss from my DevConnections trip, so stay tuned.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=96687" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=cITGBR0Lbrc:mvDcjOkC15I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=cITGBR0Lbrc:mvDcjOkC15I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=cITGBR0Lbrc:mvDcjOkC15I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=cITGBR0Lbrc:mvDcjOkC15I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/cITGBR0Lbrc" height="1" width="1"/&gt;</description></item><item><title>VS 2008 Beta 2 VPC images will timebomb on 11/1/2007</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/10/26/91626.aspx</link><pubDate>Fri, 26 Oct 2007 22:13:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:91626</guid><dc:creator>jwooley</dc:creator><slash:comments>0</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/91626.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=91626</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/91626.aspx</wfw:comment><description>&lt;P&gt;If you downloaded the VPC image version of Visual Studio 2008 beta 2, make sure to back-up your data and move anything off of the Team Foundation Server before November 1, 2007. I was just informed that the images will be time bombing on November 1 2007 rather than the originally intended March 15, 2008 date. If you don't download it now, you may not be able to retrieve your projects. More information is available at the &lt;A href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx"&gt;VS 2008 beta 2 download site&lt;/A&gt;. If you installed the stand-alone version, you should be ok.&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=91626" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=TmKs5ofLE8E:cC5Xm0Hp8sg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=TmKs5ofLE8E:cC5Xm0Hp8sg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=TmKs5ofLE8E:cC5Xm0Hp8sg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=TmKs5ofLE8E:cC5Xm0Hp8sg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/TmKs5ofLE8E" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>Creating HTML emails using VB 9 and LINQ</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/10/24/90761.aspx</link><pubDate>Wed, 24 Oct 2007 22:41:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:90761</guid><dc:creator>jwooley</dc:creator><slash:comments>2</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/90761.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=90761</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/90761.aspx</wfw:comment><description>&lt;P&gt;Today, I'm not looking at sending mass spam using LINQ to pull a list of recipients. I'm actually referring to the ability to generate the message body using XML Literals. Using the System.Net.Mail.MailMessage object, we can easily send emails to an SMTP server. &lt;/P&gt;
&lt;P&gt;The body of the email can either be plain text or HTML. Dynamically generating the text is often a laborious task involving a string builder and lots of method calls. The body corresponds to the body portion of a HTML page. If you use well formed XHTML in the body, you are actually generating a specialized version of XML. Once we are working with XML, we can use XML Literals in VB to format our output.&lt;/P&gt;
&lt;P&gt;I recently had to do this on a project to send lists of updated values from an external source. In the body, I needed to dynamically fill a HTML table with the new values. The table consists of 4 columns: State, County, Limit, Effective Date. I begin by laying out the content in a HTML editor (like Visual Studio 2008...) Here's the results:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;body&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&lt;FONT color=#000000&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eros purus, suscipit ac, pulvinar vel, aliquet vehicula, pede. Duis eros dolor, iaculis non, aliquam sed, tincidunt ac, diam. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;table&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;tr&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;State&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;County&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;New Limit&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;Effective Date&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;tr&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;tr&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;XX&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;Foo&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;$123&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;1/1/2000&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;tr&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;table&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;body&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#6464b9&gt;&lt;FONT color=#000000&gt;I know what you must be thinking by now: Gee Jim, how could you come up with such a beautiful page. As Bones would&amp;nbsp;say, "&lt;/FONT&gt;&lt;A href="mailto:D@mmit"&gt;&lt;FONT color=#000000&gt;D@mmit&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000&gt; Jim, I'm programmer not a designer." We'll keep it clean for now to focus on what is yet to come. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#6464b9&gt;&lt;FONT color=#000000&gt;Realize that our body tag is actually the root of&amp;nbsp;a well-formed XML document. As such, we can copy it as a template directly into our tool (which is a console application by the way), add a reference to System.Linq and System.Xml.Linq, and paste it into our VB module assigning a variable, let's call it "body" to the XML.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#6464b9&gt;&lt;FONT color=#000000&gt;While we're at it, we'll go ahead and insert new rows into the table based on the results of an object query. In this query, we'll iterate over the records we are adding which is an IEnumerable(Of Limit). We'll project a new row (&amp;lt;tr&amp;gt;) for each object in our iteration. Rather than imperatively iterating, we'll use LINQ's declarative syntax In addition, we'll insert our values using the &amp;lt;%= %&amp;gt; place holders. Here's the resulting declaration:&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;FONT color=#6464b9&gt;&lt;FONT color=#0000ff&gt;Friend&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Shared&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/FONT&gt; SendUpdate(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; newItems &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; IEnumerable(&lt;FONT color=#0000ff&gt;Of&lt;/FONT&gt; FhaLimit))&lt;BR&gt;&lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; body = _&lt;BR&gt;&amp;nbsp; &lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;body&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&lt;FONT color=#000000&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur eros purus, suscipit ac, pulvinar vel, aliquet vehicula, pede. Duis eros dolor, iaculis non, aliquam sed, tincidunt ac, diam.&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;table&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;tr&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;State&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;County&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;New Limit&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;Effective Date&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;th&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;tr&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&amp;lt;%=&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;From&lt;/FONT&gt; limit &lt;FONT color=#0000ff&gt;In&lt;/FONT&gt; newItems _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;Order&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;By&lt;/FONT&gt; limit.State, limit.CountyName _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;Select&lt;/FONT&gt; &lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;tr&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&amp;lt;%=&lt;/FONT&gt; limit.State &lt;FONT color=#555555&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&amp;lt;%=&lt;/FONT&gt; limit.CountyName &lt;FONT color=#555555&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&amp;lt;%=&lt;/FONT&gt; limit.Units1.Value.ToString(&lt;FONT color=#a31515&gt;"c0"&lt;/FONT&gt;) &lt;FONT color=#555555&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#555555&gt;&amp;lt;%=&lt;/FONT&gt; limit.LimitTransactionDate.ToShortDateString &lt;FONT color=#555555&gt;%&amp;gt;&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;td&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;tr&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt; &lt;FONT color=#555555&gt;%&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;table&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#844646&gt;body&lt;/FONT&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;If you've coded ASP.NET, the resulting declaration should look very familiar. Realize that this is being done in a VB module in a console application. We are not coding in a .ASPX file! The resulting maintainability of this code is much better than the old way using string builders or XSLT.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;To finish off the task, we are going to send the message with our new XHTML body. This is very easy with .NET as well.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; message &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; System.Net.Mail.MailMessage(&lt;FONT color=#a31515&gt;"from@ThinqLinq.com"&lt;/FONT&gt;, &lt;FONT color=#a31515&gt;"to@ThinqLinq.com"&lt;/FONT&gt;, &lt;FONT color=#a31515&gt;"Limits Updated"&lt;/FONT&gt;, body.ToString)&lt;BR&gt;message.IsBodyHtml = &lt;FONT color=#0000ff&gt;True&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; server &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; System.Net.Mail.SmtpClient(My.Settings.&lt;FONT color=#a31515&gt;SmtpServer&lt;/FONT&gt;)&lt;BR&gt;server.Send(message)&lt;/P&gt;
&lt;P&gt;There you go, a quick and painless way to create HTML emails using VB 9 and LINQ. Let me know what you Thinq.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=4&gt;&lt;FONT size=3&gt;Technorati tags: &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/linq" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=linq"&gt;&lt;FONT color=#444433&gt;linq&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;, &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/orcas" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=orcas"&gt;&lt;FONT color=#444433&gt;orcas&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;, &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/vb" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=vb"&gt;&lt;FONT color=#444433&gt;vb&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;, &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/xml" rel=tag&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=xml"&gt;&lt;FONT color=#f89e59 size=2&gt;xml&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;&lt;/FONT&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=90761" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=RRs3FxudEK0:s_-tMjr64vo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=RRs3FxudEK0:s_-tMjr64vo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=RRs3FxudEK0:s_-tMjr64vo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=RRs3FxudEK0:s_-tMjr64vo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/RRs3FxudEK0" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1213.aspx">VB DevCenter</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>Adding RSS posts to ThinqLinq using System.ServiceModel.Syndication.SyndicationFeed</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/10/12/85717.aspx</link><pubDate>Fri, 12 Oct 2007 04:58:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:85717</guid><dc:creator>jwooley</dc:creator><slash:comments>2</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/85717.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=85717</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/85717.aspx</wfw:comment><description>&lt;P&gt;When I originally started the ThinqLinq project I began by loading the RSS feed from my &lt;A HREF="/blogs/jwooley"&gt;DevAuthority blog&lt;/A&gt;, and iterating over the results adding them to the PostItems table in the data context. With LINQ this is relatively easy. Loading the XML from the feed is done with a single line:&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;Dim&lt;/FONT&gt; Feed &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; System.Xml.Linq.XDocument = XDocument.Load(&lt;FONT color=#a31515&gt;"http://devauthority.com/blogs/jwooley/rss.aspx"&lt;/FONT&gt;&lt;FONT size=4&gt;&lt;FONT size=3&gt;)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;The xml document consists some basic informational elements which are not terribly important in this instance as we are only pulling from a single blog. Following the initial elements, the document contains a series of "item" elements that contain the actual post information. We can easily query the document and return an IEnumerable(Of XElement) object that we can iterate over and create new post items. Below is an excerpt from my original implementation.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT color=#0000ff&gt;For&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Each&lt;/FONT&gt; post &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; XElement &lt;FONT color=#0000ff&gt;In&lt;/FONT&gt; Feed...&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;item&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#6464b9&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; DataPost &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; LinqBlog.BO.PostItem&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataPost.Author = &lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#a31515&gt;"Jim Wooley"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;DataPost.Description = post.Element(&lt;FONT color=#a31515&gt;"description"&lt;/FONT&gt;).Value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataPost.PublicationDate = &lt;FONT color=#0000ff&gt;CDate&lt;/FONT&gt;(post.Element(&lt;FONT color=#a31515&gt;"pubDate"&lt;/FONT&gt;).Value)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataPost.Title = post.Element(&lt;FONT color=#a31515&gt;"title"&lt;/FONT&gt;).Value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dc.PostItems.Add(DataPost)&lt;BR&gt;&lt;FONT color=#0000ff&gt;Next&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000 size=3&gt;Once the records are added to the table, we can commit them to the database with a single call to SubmitChanges as follows:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=4&gt;&lt;FONT size=4&gt;
&lt;P&gt;&lt;FONT size=3&gt;dc.SubmitChanges()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;Ok, so that is easy enough.&amp;nbsp;There are a&amp;nbsp;couple of things to mention before we continue on. The .Add method will be changed to .InsertOnSubmit when LINQ and the .NET 3.5 Framework is released. This will be a breaking change for anyone who is currently working with the beta builds.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;Another item of note: this implementation does not bother importing the various sub-collections, including attachments, comments, categories, etc. We will address some of those in a future update.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;In looking back at the code and being more familiar with LINQ, it is about time to update this code taking advantage of some of LINQ's more interesting features. First VB 9 allows us to&amp;nbsp;eliminate some of the functional construction syntax. Instead of weakly accessing the post.Element("description").Value, we can refer to post.&amp;lt;description&amp;gt;.Value. If we import the namespace, we will even get intellisense on the xml document.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;In addition, rather than iterating over the item elements explicitly, we can use a &amp;nbsp;LINQ query to create an IEnumerable(Of PostItem) list using the object initializers in the select projection. We then fill the entire collection using the table's AddAll (changing to InsertAllOnSubmit with RTM). With this change, we eliminate the entire for each loop. Below is the revised code:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;FONT size=3&gt;Dim&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt; Feed &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;As&lt;/FONT&gt;&lt;FONT color=#000000&gt; System.Xml.Linq.XDocument = XDocument.Load(&lt;/FONT&gt;&lt;FONT color=#a31515&gt;"http://devauthority.com/blogs/jwooley/rss.aspx"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; dc &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; LinqBlogDataContext()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;dc.PostItems.AddAll(&lt;FONT color=#0000ff&gt;From&lt;/FONT&gt; post &lt;FONT color=#0000ff&gt;In&lt;/FONT&gt; Feed...&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;item&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;Select&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; PostItem &lt;FONT color=#0000ff&gt;With&lt;/FONT&gt; { _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Author = &lt;FONT color=#a31515&gt;"Jim Wooley"&lt;/FONT&gt;, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Description = post.&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;description&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;.Value, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .PublicationDate = &lt;FONT color=#0000ff&gt;CDate&lt;/FONT&gt;(post.&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;pubDate&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;.Value), _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Title = post.&lt;FONT color=#6464b9&gt;&amp;lt;&lt;/FONT&gt;title&lt;FONT color=#6464b9&gt;&amp;gt;&lt;/FONT&gt;.Value})&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;dc.SubmitChanges()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;That's it. We've read the feed from the site, filled the object collection and saved the resulting objects to the database. Clean and simple.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;But hold on... The title of this post refers to the System.ServiceModel.Syndication.SundicationFeed object. This is a new object as part of the WCF enhancements in the .NET 3.5 Framework. To use it, add a reference to the System.ServiceModel.Web library. This object lets you create and consume feeds in both RSS and ATOM formats and use a single object model against both options. It also gives easy access to a number of child object structures, including Authors, Categories, Contributors, and&amp;nbsp;Links. Additionally it strongly types the results so that we don't need to explicitly cast the values ourselves (for example with the PublicationDate). Here is the complete code to load the feed using the SyndicationFeed.Load method, fill the PostItem collection and submit them to the database.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=4&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; feed &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; SyndicationFeed = SyndicationFeed.Load(&lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; System.Uri(&lt;FONT color=#a31515&gt;"http://devauthority.com/blogs/jwooley/rss.aspx"&lt;/FONT&gt;))&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;FONT color=#0000ff&gt;Dim&lt;/FONT&gt; dc &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; LinqBlogDataContext()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;dc.PostItems.AddAll(&lt;FONT color=#0000ff&gt;From&lt;/FONT&gt; p &lt;FONT color=#0000ff&gt;In&lt;/FONT&gt; feed.Items _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;Select&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; PostItem &lt;FONT color=#0000ff&gt;With&lt;/FONT&gt; _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {.Author = &lt;FONT color=#0000ff&gt;If&lt;/FONT&gt;(p.Authors.Count &amp;gt; 0, p.Authors(0).Name, &lt;FONT color=#a31515&gt;"Jim Wooley"&lt;/FONT&gt;), _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Description = p.Summary.Text, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .PublicationDate = p.PublishDate, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .Title = p.Title.Text})&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;dc.SubmitChanges()&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;The code is substantially the same as the revised version using the XML Literals above. The advantage of using the Syndication services implementation is that it abstracts the feed structure (RSS/ATOM), giving direct and strongly typed access to the contents.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000 size=3&gt;Now that we've set this up, maybe I can work on using the SyndicationFeed to generate the feeds in ThinqLinq and present that in a future post. Stay tuned.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=4&gt;&lt;FONT size=3&gt;Technorati tags: &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/linq" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=linq"&gt;&lt;FONT color=#444433&gt;linq&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;, &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/orcas" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=orcas"&gt;&lt;FONT color=#444433&gt;orcas&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;, &lt;/FONT&gt;&lt;A href="http://technorati.com/tag/vb" rel=tag&gt;&lt;FONT size=3&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=vb"&gt;&lt;FONT color=#444433&gt;vb&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;, &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://technorati.com/tag/xml" rel=tag&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=xml"&gt;xml&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=85717" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=jM16yWR2xGs:djJqjP_EOWM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=jM16yWR2xGs:djJqjP_EOWM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=jM16yWR2xGs:djJqjP_EOWM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=jM16yWR2xGs:djJqjP_EOWM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/jM16yWR2xGs" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>Code Snippets and Partial Methods</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/10/08/84753.aspx</link><pubDate>Tue, 09 Oct 2007 01:59:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:84753</guid><dc:creator>jwooley</dc:creator><slash:comments>0</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/84753.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=84753</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/84753.aspx</wfw:comment><description>&lt;P&gt;In my VB 9 language enhancements talks, I do them withalmost all coding on the fly as I find people often can comprehend the code. I start by building a quick class that is used throughout the demos. To assist, I do use the snippet functionality in VB. For example, if you type "property" and then tab twice, the designer will generate a private field with public property accessors. The if you change the highlighted values, any associated names will be changed as well.&lt;/P&gt;&lt;FONT size=4&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT&gt;newPropertyValue&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;&lt;FONT&gt;String&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Property&lt;/FONT&gt; &lt;FONT&gt;NewProperty&lt;/FONT&gt;() &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;&lt;FONT&gt;String&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;Return&lt;/FONT&gt; &lt;FONT&gt;newPropertyValue&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Get&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set&lt;/FONT&gt;(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; value &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;String&lt;/FONT&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;newPropertyValue&lt;/FONT&gt; = value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Set&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;Personally, if you are not doing anything within your properties, there isn't much that you buy in using properties as compared to just exposing the field publically. I want a bit more functionality built into my properties. In the very least, I want to be able to include some change tracking. Once nice feature of the snippets is the fact that they are quite easy to modify and create your own. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;To begin, we need to find where the supplied snippets are located on your disk. We can find this by clicking "Tools" and then&amp;nbsp; the "Code Snippets Manager". We can find the location by drilling into the "Code Patterns" then "Properties, Procedures, Events" and find the "Define a Property" snippet. The location window will show you where this one is located. In the default install, it will be in your c:\Program Files\Microsoft Visual Studio 9.0\Vb\Snippets\1033\common code patterns\properties and procedures\ folder. Navigate to this folder and copy the DefineAProperty.snippet. Paste it as a new file and name it whatever you want keeping the .snippet extension.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;The snippet file is just a XML document. Open it with visual studio to edit it. The top is a Header which includes the description information that will show up in the snippet manager. One change you will need to make is to alter the "Shortcut" tag so that it will use the key combination you want to use to invoke your custom snippet. In my demos, I use "propertycc", thus I change the header as follows:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Title&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Define a Property with PropertyChanging&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Title&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Author&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Jim Wooley&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Author&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Description&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Defines a Property with a backing field.&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Description&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Shortcut&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Propertycc&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515&gt;Shortcut&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;The key is to change the info in the Snippet node. In my case, I like to use a convention where the private field is the same name as the public property with the exception that it is prepended by the underscore. Thus, my field may be called _Foo and the property is called Foo. Due to this, I can eliminate the PrivateVariable node&amp;nbsp;and just keep the PropertyName and PropertyType nodes.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;With these changes in place, we can actually define our new generated code. This can be found in the CDATA section in the Code node. I use the following in my snippet declaration:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&amp;lt;![CDATA[&lt;/FONT&gt;&lt;FONT color=#808080&gt;Private _$PropertyName$ As $PropertyType$&lt;BR&gt;Public Property $PropertyName$() As $PropertyType$&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Return _$PropertyName$ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set(ByVal value As $PropertyType$)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Not _$PropertyName$.Equals(value) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _$PropertyName$ = value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnPropertyChanged("$PropertyName$")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Set&lt;BR&gt;End Property&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;]]&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;With this definition, any time we change the starting PropertyName, all associated values will be changed for each snippet. When we save our changed snippet and open a class libarry, we can start to use our new snippet by typing "propertycc" and the following code will be generated for us:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Private&lt;/FONT&gt; _NewProperty &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;String&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Property&lt;/FONT&gt; NewProperty() &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;String&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;Return&lt;/FONT&gt; _NewProperty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Get&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;Set&lt;/FONT&gt;(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; value &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;String&lt;/FONT&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;If&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Not&lt;/FONT&gt; _NewProperty.Equals(value) &lt;FONT color=#0000ff&gt;Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;_NewProperty = value&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnPropertyChanged(&lt;FONT color=#a31515&gt;"NewProperty"&lt;/FONT&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;If&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Set&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Property&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;Now our property has a detection as values change and we can then do something with it. In this case, we will call an OnPropertyChanged(propertyName as string) method, assuming we have defined one in our class. If we don't have one defined, we won't be able to compile our application. We have several options to provide the OnPropertyChanged method. The class could inherit from a base class implementtation. The additional complexity level may not necessary in many cases. Additionally, we could implement a concrete method in our class. This will mean a slight performance hit if we don't actually do anything in the method. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;As an alternative,&amp;nbsp;we can use the new partial methods in VS 2008. The great thing about partial methods is that if they are not implemented they are compiled away. Additionally, we can&amp;nbsp;place the partial stub&amp;nbsp;in a partial class for generated code and then put the implementing method in the other half of a partial class which is isolated to the custom business functionality. With this architecture in mind, we can define our partial method in the class with the rest of our generated code properties:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Partial&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/FONT&gt; OnPropertyChanged(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; propertyName &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;String&lt;/FONT&gt;)&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#000000&gt;In the other half of our partial class pair of files, we can implement the method as follows:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#0000ff&gt;&lt;FONT color=#0000ff&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Private&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/FONT&gt; OnPropertyChanged(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; propertyName &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;String&lt;/FONT&gt;)&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;RaiseEvent&lt;/FONT&gt; PropertyChanged(&lt;FONT color=#0000ff&gt;Me&lt;/FONT&gt;, &lt;FONT color=#0000ff&gt;New&lt;/FONT&gt; System.ComponentModel.PropertyChangedEventArgs(propertyName))&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;End&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Sub&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;Public&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Event&lt;/FONT&gt; PropertyChanged(&lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; sender &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;Object&lt;/FONT&gt;, &lt;FONT color=#0000ff&gt;ByVal&lt;/FONT&gt; e &lt;FONT color=#0000ff&gt;As&lt;/FONT&gt; System.ComponentModel.PropertyChangedEventArgs) &lt;FONT color=#0000ff&gt;Implements&lt;/FONT&gt; System.ComponentModel.INotifyPropertyChanged.PropertyChanged&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;If we don't need the implementation, the OnPropertyChanged method call in the property setters will be compiled away, otherwise we already have the stubs in place with our snippet in order to handle the functionality as necessary.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;If you are interested in trying out this snippet, I'm attaching it to this post. Simply&amp;nbsp;unzip it to your snippets directory and try it out.&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;Technorati tags:&amp;nbsp; &lt;A href="http://technorati.com/tag/orcas" rel=tag&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=orcas"&gt;&lt;FONT color=#444433&gt;orcas&lt;/FONT&gt;&lt;/A&gt;,&lt;A href="http://technorati.com/tag/vb" rel=tag&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=vb"&gt;&lt;FONT color=#444433&gt;vb&lt;/FONT&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=84753" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=i5BL3Ctm8k4:dG73mrrJpLE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=i5BL3Ctm8k4:dG73mrrJpLE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=i5BL3Ctm8k4:dG73mrrJpLE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=i5BL3Ctm8k4:dG73mrrJpLE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/i5BL3Ctm8k4" height="1" width="1"/&gt;</description><enclosure url="http://www.devauthority.com/blogs/jwooley/attachment/84753.ashx" length="709" type="application/x-zip-compressed" /><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1213.aspx">VB DevCenter</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>Code Camp 2007 downloads</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/10/08/84741.aspx</link><pubDate>Tue, 09 Oct 2007 01:22:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:84741</guid><dc:creator>jwooley</dc:creator><slash:comments>0</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/84741.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=84741</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/84741.aspx</wfw:comment><description>&lt;P&gt;I've uploaded the files for my presentations for the fall Code camp season which I just presented last weekend at the Birmingham, Alabama &lt;A href="http://www.alabamacodecamp.com"&gt;code camp&lt;/A&gt;. If you missed the talks, you can pick up the downloads at the following links. Also, I will be at the Charleston, &lt;A href="http://www.gcnug.org/Default.aspx?alias=www.gcnug.org/codecamp"&gt;South Carolina code camp&lt;/A&gt; this coming weekend (10/13) so you can catch me there. Additionally, the ThinqLinq talk is still available on the aspnetpodcasts.com. Links to all three parts of thie webcasts are available at &lt;A HREF="/blogs/jwooley/archive/2007/07/27/66845.aspx"&gt;http://devauthority.com/blogs/jwooley/archive/2007/07/27/66845.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Below are the links to each of the downloads for my three talks.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A HREF="/files/13/jwooley/entry73436.aspx"&gt;Building data driven web sites with Visual Studio 2008 and LINQ&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A HREF="/files/13/jwooley/entry84721.aspx"&gt;Language enhancements with VB 9&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A HREF="/files/13/jwooley/entry84714.aspx"&gt;What's new with Visual Studio 2008&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;These and all of my demos are available via&amp;nbsp;my&amp;nbsp;downloads page at &lt;A HREF="/files/13/jwooley/default.aspx?ppage=1"&gt;http://devauthority.com/files/13/jwooley/default.aspx?ppage=1&lt;/A&gt;. Don't let the license notice keep you from downloading the samples. It is just a boilerplate message that I'm not able to change at this point.&lt;/P&gt;
&lt;P&gt;Technorati tags: &lt;A href="http://technorati.com/tag/linq" rel=tag&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=linq"&gt;&lt;FONT color=#444433&gt;linq&lt;/FONT&gt;&lt;/A&gt;, &lt;A href="http://technorati.com/tag/orcas" rel=tag&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=orcas"&gt;&lt;FONT color=#444433&gt;orcas&lt;/FONT&gt;&lt;/A&gt;,&lt;A href="http://technorati.com/tag/vb" rel=tag&gt;&lt;IMG alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=vb"&gt;&lt;FONT color=#444433&gt;vb&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=84741" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=ymRLjvOVxFs:i26DNJbGLRk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=ymRLjvOVxFs:i26DNJbGLRk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=ymRLjvOVxFs:i26DNJbGLRk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=ymRLjvOVxFs:i26DNJbGLRk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/ymRLjvOVxFs" height="1" width="1"/&gt;</description><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1150.aspx">LINQ</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1159.aspx">Code Camp</category><category domain="http://www.devauthority.com/blogs/jwooley/archive/category/1214.aspx">VB</category></item><item><title>Atlanta MS Pros/Cutting Edge/VB Study group</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/09/28/81201.aspx</link><pubDate>Fri, 28 Sep 2007 17:22:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:81201</guid><dc:creator>jwooley</dc:creator><slash:comments>4</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/81201.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=81201</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/81201.aspx</wfw:comment><description>&lt;H2 align=center&gt;Please join us on Monday, October 1 at 6:30 PM for the monthly Atlanta Cutting Edge .NET / MsPros / VB Study Group meeting. &lt;/H2&gt;&lt;BR&gt;
&lt;H3&gt;Note, for this meeting we will be meeting at &lt;STRONG&gt;Turner&lt;/STRONG&gt; in midtown (1015 Techwood Drive) rather than the usual Microsoft offices. If you haven't attended meetings in the past due to location, here's your chance to let us know if this facility is better. Scroll to the bottom of this message for directions to the meeting.&lt;/H3&gt;
&lt;DIV align=center&gt;To register for this event, please go to &lt;A href="http://www.clicktoattend.com/?id=121536"&gt;&lt;FONT color=#0068cf&gt;http://www.clicktoattend.com/?id=121536.&lt;/FONT&gt;&lt;/A&gt; Registration for this meeting &lt;B&gt;is required&lt;/B&gt; in order to get you through Turner's security.&lt;/DIV&gt;&lt;BR&gt;
&lt;H3&gt;Presentation Topics&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Speaker: &lt;/STRONG&gt;Steve Porter&lt;BR&gt;&lt;STRONG&gt;Topic:&lt;/STRONG&gt; Windows Workflow Rules Engine&lt;BR&gt;&lt;STRONG&gt;Summary:&lt;/STRONG&gt; This talk explores creating, maintaining and executing business rules using the Windows Workflow (WF) rules engine.&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;STRONG&gt;Speaker: &lt;/STRONG&gt;Rik Robinson&lt;/SPAN&gt;&lt;BR&gt;&lt;STRONG&gt;Topic:&lt;/STRONG&gt; &lt;SPAN&gt;Deep Dive CSS for the ASP.NET Developer&lt;/SPAN&gt; &lt;BR&gt;&lt;BR&gt;
&lt;P&gt;This will be a thorough discussion of all that is CSS.&amp;nbsp; Whether you know it as the necessary evil or the great enabler (that just hasn’t quite clicked for you yet), you should walk away with something valuable from this discussion.&amp;nbsp; I will begin with the basic box model and travel all the way to the holiest of grails (the &lt;I&gt;no tables here, &lt;/I&gt;two and three&lt;I&gt; &lt;/I&gt;column ASP.NET Master Page layout…yours to take home for free!).&amp;nbsp; Along the way, we’ll touch on some CSS Best Practices and gotchas in ASP.NET and take a look at the new CSS tools in Visual Studio 2008 (Orcas).&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;Rik Robinson is an Independent Consultant in the Atlanta GA area.&amp;nbsp; He holds the following certifications (all .NET Framework 2.0):&amp;nbsp; MCPD –Enterprise Applications, MCTS-Web, MCTS-Windows, MCTS-Distributed Applications.&amp;nbsp; He really hates that he has to type this in third person like someone else wrote it.&amp;nbsp; Rik is supposed to maintain his blog at &lt;A href="http://www.r2musings.com/" target=_blank&gt;&lt;FONT color=#0068cf&gt;www.r2musings.com&lt;/FONT&gt;&lt;/A&gt;.&amp;nbsp;&amp;nbsp; He will soon, I’m sure.&amp;nbsp; Rik’s focus is always on the User Experience (both the end user’s and the developer’s).&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;
&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;BR&gt;
&lt;P&gt;&lt;B&gt;NOTE: Different location!&lt;/B&gt; We will be meeting at the Turner Broadcasting in Atlanta &lt;BR&gt;
&lt;H1&gt;&lt;U&gt;&lt;SPAN&gt;Directions to Techwood&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/U&gt;&lt;/H1&gt;&lt;BR&gt;
&lt;P&gt;&lt;B&gt;Marta Rail System&lt;/B&gt;: Midtown Stop on the North/South Line&lt;/P&gt;&lt;BR&gt;
&lt;P&gt;&lt;B&gt;FROM I-75/I-85 NORTH HEADING NORTH&lt;/B&gt;&lt;/P&gt;&lt;BR&gt;
&lt;UL&gt;&lt;BR&gt;
&lt;LI&gt;Travel North on I-75 and I-85.&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Take 10&lt;SUP&gt;th&lt;/SUP&gt; Street/14&lt;SUP&gt;th&lt;/SUP&gt; Street/Techwood Drive/Georgia Tech exit (Exit #250)&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Turn left at first red light, onto Tenth Street (heading West)&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Turn right onto Techwood Drive and left into the visitor entrance.&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Pull up to window of the GateHouse and Security Officers will direct you to visitor parking&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Take the parking deck elevator to the 1&lt;SUP&gt;st&lt;/SUP&gt; floor of the 1000 Bldg and check in with the receptionist in the lobby. Tell them you are with the Atlanta MS Pros.&lt;/LI&gt;&lt;/UL&gt;&lt;BR&gt;
&lt;P&gt;&lt;B&gt;FROM I-75/I-85 SOUTH HEADING SOUTH&lt;/B&gt;&lt;/P&gt;&lt;BR&gt;
&lt;UL&gt;&lt;BR&gt;
&lt;LI&gt;Travel South on I-75 or I-85.&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Take Techwood Drive/Tenth Street/Fourteenth Street exit (Exit #84)&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Go straight ahead and the exit ramp turns into Techwood Drive&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Cross 14&lt;SUP&gt;th&lt;/SUP&gt; Street and stay in the right lane.&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Turn right into the visitor entrance on Techwood Drive&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Pull up to window of the GateHouse and Security Officers will direct you to visitor parking&lt;/LI&gt;&lt;BR&gt;
&lt;LI&gt;Take the parking deck elevator to the 1&lt;SUP&gt;st&lt;/SUP&gt; floor of the 1000 Bldg and check in with the receptionist in the lobby. Tell them you are with the Atlanta MS Pros.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Thanks, and I hope to see everyone at this month's meeting!&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=81201" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=NvgrzxoW9ec:0p28ipD6q3c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=NvgrzxoW9ec:0p28ipD6q3c:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=NvgrzxoW9ec:0p28ipD6q3c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=NvgrzxoW9ec:0p28ipD6q3c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/NvgrzxoW9ec" height="1" width="1"/&gt;</description></item><item><title>Nerd score</title><link>http://www.devauthority.com/blogs/jwooley/archive/2007/09/12/77045.aspx</link><pubDate>Wed, 12 Sep 2007 17:28:00 GMT</pubDate><guid isPermaLink="false">42f563c8-34ea-4d01-bfe1-2047c2222a74:77045</guid><dc:creator>jwooley</dc:creator><slash:comments>0</slash:comments><comments>http://www.devauthority.com/blogs/jwooley/comments/77045.aspx</comments><wfw:commentRss>http://www.devauthority.com/blogs/jwooley/commentrss.aspx?PostID=77045</wfw:commentRss><wfw:comment>http://www.devauthority.com/blogs/rsscomments/77045.aspx</wfw:comment><description>&lt;P&gt;My wife says I'm a nerd, but didn't think it was too bad. Seeing &lt;A href="http://adoguy.com"&gt;Shawn&lt;/A&gt; post his &lt;A href="http://adoguy.com/2007/09/09/Nerd_King.aspx"&gt;nerd score&lt;/A&gt;, I figured I would check it out and see. Little did I realize that I would score&amp;nbsp;HIGHER than him in terms of technology. He got a much higher nerd score though. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.nerdtests.com/nt2ref.html"&gt;&lt;IMG alt="NerdTests.com says I'm an Uber Cool Nerd God.  What are you?  Click here!" src="http://www.nerdtests.com/images/badge/nt2/b82b7d9959706e65.png"&gt; &lt;/A&gt;&lt;/P&gt;&lt;img src="http://www.devauthority.com/aggbug.aspx?PostID=77045" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=6q7PuAZpIHQ:JtGX66kF_Mg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=6q7PuAZpIHQ:JtGX66kF_Mg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/WooleysWonderings?a=6q7PuAZpIHQ:JtGX66kF_Mg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WooleysWonderings?i=6q7PuAZpIHQ:JtGX66kF_Mg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WooleysWonderings/~4/6q7PuAZpIHQ" height="1" width="1"/&gt;</description></item></channel></rss>

