<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Code Connections</title><subtitle type="html">Some random ramblings around WF, WCF, portals, and code</subtitle><id>http://blogs.msdn.com/csimpkins/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/csimpkins/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-02-07T08:40:00Z</updated><entry><title>Week @ TechReady</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/archive/2008/08/06/week-techready.aspx" /><id>http://blogs.msdn.com/csimpkins/archive/2008/08/06/week-techready.aspx</id><published>2008-08-06T16:53:26Z</published><updated>2008-08-06T16:53:26Z</updated><content type="html">&lt;p&gt;The team had been at the Microsoft technical readiness conference last week. The conferences are great opportunities to talk with our technical field and talk through what's happening, and converse between corporate and the field. I, personally, always enjoy these events when I have the opportunity to attend these - to listen and to learn from the speakers, to meet new folks from the field and learn about issues on the ground, and to meet with Microsoft folks I hadn't seen in a while.&lt;/p&gt;  &lt;p&gt;This time around, I saw a gaggle of things that woke the inner-geek up. These are a few of my favorite things:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I got to see &lt;a href="http://blogs.msdn.com/rjacobs" target="_blank"&gt;Ron&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/bags/" target="_blank"&gt;Rob&lt;/a&gt;'s REST sample application, walking through how to make WCF more and more RESTful. They will be doing a series of screencasts on this; if you haven't checked out their &lt;a href="http://channel9.msdn.com/posts/rojacobs/endpointtv-Controlling-the-URI-in-RESTful-WCF-with-Rob-Bagby/" target="_blank"&gt;first screencast in the series&lt;/a&gt; (Ron mentioned this in &lt;a href="http://blogs.msdn.com/endpoint/archive/2008/07/28/endpoint-tv-getting-control-of-the-uri-with-restful-wcf-services.aspx" target="_blank"&gt;his post last week&lt;/a&gt;), I would recommend it. &lt;/li&gt;    &lt;li&gt;Watching &lt;a href="http://blogs.msdn.com/mwinkle/default.aspx" target="_blank"&gt;Matt Winkler&lt;/a&gt; present will always make one's week. &lt;/li&gt;    &lt;li&gt;A couple Microsoft folks (and &lt;a href="http://blogs.thinktecture.com/cweyer/" target="_blank"&gt;Christian Weyer&lt;/a&gt;) walked through using WF and WCF within &amp;quot;&lt;a href="http://biztalk.net/default.aspx" target="_blank"&gt;BizTalk Services&lt;/a&gt;.&amp;quot; This was the first time I had seen the services in action, and - in fact - I signed up on Wednesday to play with it further.       &lt;br /&gt;One of the more interesting items with &amp;quot;&lt;a href="http://biztalk.net/default.aspx" target="_blank"&gt;BizTalk Services&lt;/a&gt;&amp;quot; is the fact that they added the capability to use XOML-only workflows a couple weeks ago. While their activity pool is a bit limited at the moment, I really like the promise in the system. &lt;/li&gt;    &lt;li&gt;I love watching people write code on stage. I picked up a couple new tricks that I was unaware VS2008 could do and some additional dev tools that can be used to aid in WCF service development, but will become part of my toolbelt. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/mwinkle/archive/2008/08/05/advanced-workflow-services-talk-demo-1-of-4.aspx" target="_blank"&gt;Matt Winkler&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/kaevans/archive/2008/07/31/windows-workflow-foundation-patterns-resources.aspx" target="_blank"&gt;Kirk Evans&lt;/a&gt; each did a 400-level session covering patterns in WF; these may evolve into articles in the future. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This week, I'm in Chicago in training. We're working through publishing a few documents, but otherwise it's a lighter week on the product management front.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8837418" width="1" height="1"&gt;</content><author><name>csimpkins</name><uri>http://blogs.msdn.com/members/csimpkins.aspx</uri></author><category term=".NET" scheme="http://blogs.msdn.com/csimpkins/archive/tags/.NET/default.aspx" /><category term="TechReady" scheme="http://blogs.msdn.com/csimpkins/archive/tags/TechReady/default.aspx" /><category term="Windows Workflow Foundation" scheme="http://blogs.msdn.com/csimpkins/archive/tags/Windows+Workflow+Foundation/default.aspx" /></entry><entry><title>Productivity Boost via Plug-ins</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/archive/2008/06/10/productivity-boost-via-plug-ins.aspx" /><id>http://blogs.msdn.com/csimpkins/archive/2008/06/10/productivity-boost-via-plug-ins.aspx</id><published>2008-06-10T19:06:00Z</published><updated>2008-06-10T19:06:00Z</updated><content type="html">&lt;p&gt;I recently installed a couple Outlook file preview handlers that have made my life much better:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;PDF File Handler - From &lt;a href="http://www.timheuer.com/blog/archive/2007/02/27/14001.aspx" target="_blank"&gt;Tim Heuer's blog&lt;/a&gt;, Tim worked with &lt;a href="http://www.foxitsoftware.com/" target="_blank"&gt;Foxit software&lt;/a&gt; to create the PDF preview handler&lt;/li&gt;    &lt;li&gt;XPS File Handler - Part of the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b8dcffdd-e3a5-44cc-8021-7649fd37ffee&amp;amp;DisplayLang=en" target="_blank"&gt;Microsoft XML Paper Specification Essentials Pack&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And, while you may at &lt;a href="http://www.foxitsoftware.com/" target="_blank"&gt;Foxit's website&lt;/a&gt; installing their excellent viewer, it may be worth noting that they also offer a &lt;a href="http://www.foxitsoftware.com/pdf/ifilter/" target="_blank"&gt;PDF iFilter&lt;/a&gt; that works quite well with Windows Desktop Search on XP and on Vista. This iFilter has been a huge hit at home, allowing us to depend on the text in the PDF file, rather than our folder naming practices, when looking for instruction manuals for the reverse osmosis filter (not that this is an actual example from last weekend or anything :) ).&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8590109" width="1" height="1"&gt;</content><author><name>csimpkins</name><uri>http://blogs.msdn.com/members/csimpkins.aspx</uri></author><category term="Office" scheme="http://blogs.msdn.com/csimpkins/archive/tags/Office/default.aspx" /><category term="Plug-ins and Add-ons" scheme="http://blogs.msdn.com/csimpkins/archive/tags/Plug-ins+and+Add-ons/default.aspx" /></entry><entry><title>WF Web Samples Updated</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/archive/2008/05/05/wf-web-samples-updated.aspx" /><id>http://blogs.msdn.com/csimpkins/archive/2008/05/05/wf-web-samples-updated.aspx</id><published>2008-05-06T03:04:43Z</published><updated>2008-05-06T03:04:43Z</updated><content type="html">&lt;p&gt;I wanted to post a quick notice that I updated two downloads over the past few weeks.&lt;/p&gt;  &lt;p&gt;Both &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=A438A9B9-9F15-42EC-866F-2EA58E10DB36&amp;amp;displaylang=en"&gt;WF Web Workflow Approvals Starter Kit&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=6de9f614-e4d9-4180-886a-195538a58603&amp;amp;displaylang=en"&gt;Simple Human Workflow Quickstart Sample Code&lt;/a&gt; had a couple small bugs in them (low priority issues, mostly dealing with Visual Studio packaging of the files) - I've fixed them, repackaged them, and posted them back up for download. Please let me know if you find anything that I may have missed.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8461739" width="1" height="1"&gt;</content><author><name>csimpkins</name><uri>http://blogs.msdn.com/members/csimpkins.aspx</uri></author><category term=".NET" scheme="http://blogs.msdn.com/csimpkins/archive/tags/.NET/default.aspx" /><category term="Windows Workflow Foundation" scheme="http://blogs.msdn.com/csimpkins/archive/tags/Windows+Workflow+Foundation/default.aspx" /><category term="Code Samples" scheme="http://blogs.msdn.com/csimpkins/archive/tags/Code+Samples/default.aspx" /></entry><entry><title>New Role - Joining the .NET Folks</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/archive/2008/05/05/new-role-joining-the-net-folks.aspx" /><id>http://blogs.msdn.com/csimpkins/archive/2008/05/05/new-role-joining-the-net-folks.aspx</id><published>2008-05-05T19:23:22Z</published><updated>2008-05-05T19:23:22Z</updated><content type="html">&lt;p&gt;I'm excited to announce that I've changed roles within Microsoft. For the past month, I've been a part of the .NET product marketing team as the senior product manager for Windows Workflow Foundation (WF).&lt;/p&gt;  &lt;p&gt;What does that mean for this space? For &lt;strong&gt;&lt;em&gt;this blog&lt;/em&gt;&lt;/strong&gt;, it doesn't really mean anything, to be honest. I will be blogging a lot more, but not here - I will be blogging to the team blog (which I will link once we've agreed on a blog name), I will be working with Ron Jacobs on some Channel9 shows, and posting in the forums more. So this will be more of a 'hey - check this out' roll, rather than a place for original WF content. There will still be occasional meaningful content, but it will probably be related to my weekend/side activities.&lt;/p&gt;  &lt;p&gt;I'm very excited about the role - it allows me to actually talk about my work externally, since most of the content is not covered under NDA for .NET v3.&lt;em&gt;x&lt;/em&gt; stuff, and the newer stuff as we move through the calendar year.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8460826" width="1" height="1"&gt;</content><author><name>csimpkins</name><uri>http://blogs.msdn.com/members/csimpkins.aspx</uri></author></entry><entry><title>Using CSS within ASCX Files</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/archive/2008/02/28/using-css-within-ascx-files.aspx" /><id>http://blogs.msdn.com/csimpkins/archive/2008/02/28/using-css-within-ascx-files.aspx</id><published>2008-02-29T01:43:21Z</published><updated>2008-02-29T01:43:21Z</updated><content type="html">&lt;p&gt;I was trying to add some more style into the &lt;a href="http://www.codeplex.com/WowGuildRoster" target="_blank"&gt;WoW Guild Roster&lt;/a&gt; module I'm writing, but I ran into an issue that stumped me for quite a while - how to link to the CSS file.&lt;/p&gt;  &lt;p&gt;The issue with linking to a Cascading Style Sheet (CSS) was problematic on two fronts:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;DotNetNuke development is done via ASCX files, and not ASPX files     &lt;br /&gt;This means that I'm coding for the control, and not the page. As such, I never quite know where the location context of the rendering is occurring.&lt;/li&gt;    &lt;li&gt;DotNetNuke uses some rather unfriendly URLs     &lt;br /&gt;The web browser sees something more like this:      &lt;br /&gt;http://www.mywebsite.com/WebSiteInformation/DNNWebPage/tabid/167/Default.aspx      &lt;br /&gt;This poses all kinds of obvious problems, taking my first point and multiplying it a few more times over.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Needless to say, I was convinced that using the standard &amp;lt;link&amp;gt; call wasn't looking too useful at this point. After looking around and playing with the code for 20-30 minutes, there's a couple routes to go for this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Use a hard-coded URL such as:     &lt;br /&gt;&amp;lt;link rel='stylesheet' type='text/css' href='/DesktopModules/MyModuleName/customModuleStyles.css' /&amp;gt;&lt;/li&gt;    &lt;li&gt;Create a custom function in your code-behind to handle the URL (as &lt;a href="http://aspnetresources.com/blog/linking_stylesheets_from_master_pages.aspx" target="_blank"&gt;discussed by Milan in his on Stylesheets and Master pages blog post&lt;/a&gt; a couple years ago)&lt;/li&gt;    &lt;li&gt;Use the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.control.resolveurl.aspx" target="_blank"&gt;ResolveUrl() method&lt;/a&gt; so that it looks like:      &lt;br /&gt;&amp;lt;link rel='stylesheet' type='text/css' href='&amp;lt;%= ResolveUrl(&amp;quot;~/DesktopModules/MyModuleName/customModuleStyles.css&amp;quot;) %&amp;gt;' /&amp;gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I ended up using with the third option, quite happily, and thought I would share here.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7937965" width="1" height="1"&gt;</content><author><name>csimpkins</name><uri>http://blogs.msdn.com/members/csimpkins.aspx</uri></author><category term=".NET" scheme="http://blogs.msdn.com/csimpkins/archive/tags/.NET/default.aspx" /><category term="DotNetNuke" scheme="http://blogs.msdn.com/csimpkins/archive/tags/DotNetNuke/default.aspx" /><category term="ASP.NET" scheme="http://blogs.msdn.com/csimpkins/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>TechReady and ODC Done</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/archive/2008/02/15/techready-and-odc-done.aspx" /><id>http://blogs.msdn.com/csimpkins/archive/2008/02/15/techready-and-odc-done.aspx</id><published>2008-02-16T01:11:03Z</published><updated>2008-02-16T01:11:03Z</updated><content type="html">&lt;p&gt;A couple large events have finished up for the week - the internal TechReady conference here in Seattle and the &lt;a href="http://www.odc2008.com/" target="_blank"&gt;Office Developer Conference&lt;/a&gt; down in San Jose.&lt;/p&gt;  &lt;p&gt;Coming out of ODC, a lot of material is hitting the public wire, with more starting to prime up at stage left for &lt;a href="http://visitmix.com/2008/default.aspx" target="_blank"&gt;MIX-2008&lt;/a&gt; and the &lt;a href="http://www.mssharepointconference.com/" target="_blank"&gt;SharePoint conference&lt;/a&gt; (for which I'm currently wait-listed for), both in a few weeks. It's an overall exciting time to be at Microsoft, to be a partner of Microsoft, and to be a customer. I just wish our stock was being treated better...but I digress... :-)&lt;/p&gt;  &lt;p&gt;On a personal note, there was a lot to get excited about:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A &lt;a href="http://www.microsoft.com/MSPress/books/9471.aspx" target="_blank"&gt;new book on building Office Business Applications&lt;/a&gt; got highlighted, written by a colleague of mine, Bhushan Nene, along with a few other folks I see on the DLs&lt;/li&gt;    &lt;li&gt;I learned a lot about C# 3.0 - I took a 'drive around the new features' hands-on-lab that walked through &lt;a href="http://msdn2.microsoft.com/en-us/library/bb308966.aspx" target="_blank"&gt;the new syntax and features&lt;/a&gt;. I had already learned about a couple of them in watching some VS2008 demos, but it's a whole lot of goodness. And one of the best things is that many of the C# 3.0 features can still be used in VS2008 when you are targeting the .NET Framework v2 runtime.&lt;/li&gt;    &lt;li&gt;It's amazing how many of my DPE colleagues are blogging, podcasting, and creating just spectacular demos! I was quite inspired, I must admit. And while there isn't much I can publicly blog about in my current role (too many of my conversations are NDA conversations with ISV partners, and really wouldn't be of interest to the general public who aren't AIIM members anyway), it's inspired me to do a lot more internally.     &lt;br /&gt;Along a similar note, I've gone and grabbed a copy of &lt;a href="http://www.demomate.com/" target="_blank"&gt;DemoMate&lt;/a&gt; and &lt;a href="http://www.techsmith.com/camtasia.asp" target="_blank"&gt;Camtesia&lt;/a&gt; - and it will probably yield more interactive content here around my DNN/WoW work, if nothing else.&lt;/li&gt;    &lt;li&gt;I attended some sessions on WPF, and I feel the need for some WoW/raid analysis tools using WPF and Silverlight at some point in the summer. This should be fun!&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All of that being said, I have one more day of TR6 stuff tomorrow, then I get to start catching up on sleep and try to pick up my regular schedule again.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7723186" width="1" height="1"&gt;</content><author><name>csimpkins</name><uri>http://blogs.msdn.com/members/csimpkins.aspx</uri></author><category term=".NET" scheme="http://blogs.msdn.com/csimpkins/archive/tags/.NET/default.aspx" /><category term="ISV Partners" scheme="http://blogs.msdn.com/csimpkins/archive/tags/ISV+Partners/default.aspx" /><category term="Conferences" scheme="http://blogs.msdn.com/csimpkins/archive/tags/Conferences/default.aspx" /><category term="OBA" scheme="http://blogs.msdn.com/csimpkins/archive/tags/OBA/default.aspx" /></entry><entry><title>Starting out @ TechReady</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/archive/2008/02/10/starting-out-techready.aspx" /><id>http://blogs.msdn.com/csimpkins/archive/2008/02/10/starting-out-techready.aspx</id><published>2008-02-11T08:47:26Z</published><updated>2008-02-11T08:47:26Z</updated><content type="html">&lt;p&gt;I drove into Seattle this weekend for the TechReady 6 pre-conference events for DPE. Lots of really good content, and always good to hear what other evangelists are up to. This will be a long week of commutes into Seattle - the drives in were nice this weekend, but I'm not looking forward to the traffic tomorrow (I'm taking Metro).&lt;/p&gt;  &lt;p&gt;After a day full of sessions by DPE folks such as &lt;a href="http://blogs.msdn.com/theshow/" target="_blank"&gt;Robert Hess&lt;/a&gt; and &lt;a href="http://www.jeffsandquist.com/default.aspx" target="_blank"&gt;Jeff Sandquist&lt;/a&gt;, and a few platform notables such as &lt;a href="http://weblogs.asp.net/scottgu/" target="_blank"&gt;Scott Guthrie&lt;/a&gt;, the partner booths opened up for TR6 (partners were on-site for tonight only) and I caught up with my ISV partners. It was great to see those who made it - they split their booth staffing between the &lt;a href="https://microsoft.crgevents.com/ODC2008/Content/default.aspx?p=UC3HYF" target="_blank"&gt;ODC&lt;/a&gt; and TR6.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7601802" width="1" height="1"&gt;</content><author><name>csimpkins</name><uri>http://blogs.msdn.com/members/csimpkins.aspx</uri></author><category term="TechReady" scheme="http://blogs.msdn.com/csimpkins/archive/tags/TechReady/default.aspx" /><category term="ISV Partners" scheme="http://blogs.msdn.com/csimpkins/archive/tags/ISV+Partners/default.aspx" /><category term="Conferences" scheme="http://blogs.msdn.com/csimpkins/archive/tags/Conferences/default.aspx" /></entry><entry><title>Parsing the WoW Armory</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/csimpkins/archive/2008/02/07/parsing-the-wow-armory.aspx" /><id>http://blogs.msdn.com/csimpkins/archive/2008/02/07/parsing-the-wow-armory.aspx</id><published>2008-02-07T19:40:00Z</published><updated>2008-02-07T19:40:00Z</updated><content type="html">&lt;P&gt;One of my side projects is working on a &lt;A href="http://www.codeplex.com/WowGuildRoster" target=_blank mce_href="http://www.codeplex.com/WowGuildRoster"&gt;WoW Guild Roster&lt;/A&gt;. I've been doing a lot of work over the past couple months with &lt;A href="http://msdn2.microsoft.com/en-gb/vstudio/default.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-gb/vstudio/default.aspx"&gt;Visual Studio 2008&lt;/A&gt;, although I've been stuck with ASP.NET v2 since &lt;A href="http://www.dotnetnuke.com/" target=_blank mce_href="http://www.dotnetnuke.com/"&gt;DNN&lt;/A&gt; won't be supporting v3.5 until DNN v5. One of the features that has me really excited within .NET v3.5 is &lt;A href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;So, while I was playing with LINQ, I decided 'what would the code look like if I were to query WoW character data from the &lt;A href="http://www.wowarmory.com/" target=_blank mce_href="http://www.wowarmory.com/"&gt;WoW Armory&lt;/A&gt;? So...I sat down and wrote a quick query of character information.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;XDocument _charSheet;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;System.Net.WebClient _wc = new System.Net.WebClient(); &lt;BR&gt;_wc.QueryString.Add("r", this.Realm); &lt;BR&gt;_wc.QueryString.Add("n", this.CharName); &lt;BR&gt;_wc.Headers.Add("user-agent", "MSIE 7.0"); &lt;BR&gt;System.Xml.XmlTextReader _reader = new System.Xml.XmlTextReader(_wc.OpenRead(ArmoryCharSheet));&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;_charSheet = XDocument.Load(_reader); &lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;IEnumerable&amp;lt;XElement&amp;gt; _charInfoEl = _charSheet.Root.Descendants("characterInfo"); &lt;BR&gt;if (_charInfoEl.Count() &amp;lt; 1) { &lt;BR&gt;&amp;nbsp; MessageBox.Show("No descendants at &amp;lt;characterInfo&amp;gt;"); &lt;BR&gt;} else if (_charInfoEl.Count() &amp;gt; 1) { &lt;BR&gt;&amp;nbsp; MessageBox.Show("Multiple descendants at &amp;lt;characterInfo&amp;gt;"); &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;var _charInfo = from item in _charInfoEl.Descendants("character") &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; select new { &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; Battlegroup = item.Attribute("battleGroup").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharURL = item.Attribute("charUrl").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Class = item.Attribute("class").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ClassID = item.Attribute("classId").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Faction = item.Attribute("faction").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FactionID = item.Attribute("factionId").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gender = item.Attribute("gender").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GenderID = item.Attribute("genderId").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GuildName = item.Attribute("guildName").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GuildURL = item.Attribute("guildUrl").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LastModifiedString = item.Attribute("lastModified").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Level = item.Attribute("level").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name = item.Attribute("name").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Prefix = item.Attribute("prefix").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Race = item.Attribute("race").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RaceID = item.Attribute("raceId").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Realm = item.Attribute("realm").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Suffix = item.Attribute("suffix").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }; &lt;BR&gt;IEnumerable&amp;lt;XElement&amp;gt; _profsEl = _charInfoEl.Descendants("professions"); &lt;BR&gt;var _profs = from item in _profsEl.Descendants("skill") &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; select new { &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; Key = item.Attribute("key").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name = item.Attribute("max").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Max = item.Attribute("name").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Value = item.Attribute("value").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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }; &lt;BR&gt;IEnumerable&amp;lt;XElement&amp;gt; _baseStatsEl = _charInfoEl.Descendants("baseStats"); &lt;BR&gt;var _baseStats = from item in _baseStatsEl.Descendants() &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; select new { &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; Stat = item.Name.ToString(), &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; Base = item.Attribute("base").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;&amp;nbsp;&amp;nbsp;&amp;nbsp; Effective = item.Attribute("effective").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;&amp;nbsp;&amp;nbsp;&amp;nbsp; Element = item &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;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I was quite impressed by the brevity of the code needed to get this. I still want to go back and clean up the web request to use some of WCF's new capabilities, but I think the LINQ aspects of the code really speaks for itself. The code that it currently takes in .NET v2 to crawl/navigate the XML files was much much larger.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7519953" width="1" height="1"&gt;</content><author><name>csimpkins</name><uri>http://blogs.msdn.com/members/csimpkins.aspx</uri></author><category term="World of Warcraft" scheme="http://blogs.msdn.com/csimpkins/archive/tags/World+of+Warcraft/default.aspx" /><category term="LINQ" scheme="http://blogs.msdn.com/csimpkins/archive/tags/LINQ/default.aspx" /><category term=".NET" scheme="http://blogs.msdn.com/csimpkins/archive/tags/.NET/default.aspx" /></entry></feed>