<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" 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/"><channel><title>Conclusion</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx</link><description>[Table of Contents] First, if you finished the tutorial, I am very interested to know that you did. I am also interested in how long it took you (in hours). Please drop me a quick email at white.eric at microsoft.com. In the end, I believe that programming</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Read trough</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#7788969</link><pubDate>Tue, 19 Feb 2008 11:33:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7788969</guid><dc:creator>Vladekk</dc:creator><description>&lt;p&gt;I read tutorial till parsing example part, don't have time for this now. I understood almost all of this before, but FP switch is something new to me, had to think on this one a bit.&lt;/p&gt;
</description></item><item><title>re: Conclusion</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#8363181</link><pubDate>Sun, 06 Apr 2008 17:51:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8363181</guid><dc:creator>UrosBizjak</dc:creator><description>&lt;p&gt;Great tutorial. Some of the code is very advanced (at least for me), but you gave some great solutions to problems.&lt;/p&gt;
&lt;p&gt;It gives me much better insight into this whole LINQ business.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
</description></item><item><title>re: Conclusion</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#8461264</link><pubDate>Mon, 05 May 2008 22:45:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8461264</guid><dc:creator>Ryan Riley</dc:creator><description>&lt;p&gt;Thanks for this tutorial, Eric. It's very clear and helpful. It took me about 8 hours total go straight through, copying and testing only select code segments. (I'm not certain as to the time, but that's about right; I was looking at some other links for further reference, too.)&lt;/p&gt;
&lt;p&gt;The examples you gave were good, too, but I wonder why you would use fp techniques instead of an XSLT transformation since you're using OpenXML. I can certainly see some great benefits to this for generating object transformations.&lt;/p&gt;
</description></item><item><title>re: Conclusion</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#8461975</link><pubDate>Tue, 06 May 2008 05:48:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8461975</guid><dc:creator>EricWhite</dc:creator><description>&lt;p&gt;Hi Ryan,&lt;/p&gt;
&lt;p&gt;There are two types of XML transforms, generally speaking: &amp;nbsp;1) transform a document to some simpler form of XML, and 2) transform a document into a new document (a document centric transform).&lt;/p&gt;
&lt;p&gt;For the first type of transform, my experience is that it is far easier to write the transform using LINQ to XML compared to XSLT. &amp;nbsp;I also find the code easier to read. &amp;nbsp;I think that this is only true for developers after getting some level of experience with LINQ.&lt;/p&gt;
&lt;p&gt;And there is the issue of performance - some LINQ transforms might perform better than the same transform in XSLT. &amp;nbsp;There are a lot of reasons for this:&lt;/p&gt;
&lt;p&gt;- XPath expressions are typically interpreted, whereas LINQ expressions are statically bound.&lt;/p&gt;
&lt;p&gt;- no need to fire off a separate process in C# to do the transform.&lt;/p&gt;
&lt;p&gt;But this by itself could be a dubious reason, as it is possible to write poorly coded transforms in either language.&lt;/p&gt;
&lt;p&gt;For document centric transforms, XSLT works well; to use LINQ, you have to do something like the technique detailed here: &amp;nbsp;&lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/ericwhite/archive/2007/07/30/how-to-use-annotations-to-transform-linq-to-xml-trees-in-an-xslt-style.aspx"&gt;http://blogs.msdn.com/ericwhite/archive/2007/07/30/how-to-use-annotations-to-transform-linq-to-xml-trees-in-an-xslt-style.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And that technique, while it would perform well, is a bit abstract.&lt;/p&gt;
&lt;p&gt;Sometimes there is an advantage to staying within one language, C# 3.0, instead of coding using a hybrid approach.&lt;/p&gt;
&lt;p&gt;I've written a pile of programs to extract data and text from Open XML documents, and I really enjoy using LINQ for those purposes.&lt;/p&gt;
&lt;p&gt;You are right, for object transformations, LINQ rocks!&lt;/p&gt;
&lt;p&gt;-Eric&lt;/p&gt;
</description></item><item><title>Complete Listing of ParseWordML</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#8904806</link><pubDate>Fri, 29 Aug 2008 14:32:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8904806</guid><dc:creator>Eric White's Blog</dc:creator><description>&lt;p&gt;[Table of Contents] [Next Topic] The following code is attached to this page. using System; using System.Collections.Generic;&lt;/p&gt;
</description></item><item><title>re: Conclusion</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#8967355</link><pubDate>Sat, 27 Sep 2008 08:06:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8967355</guid><dc:creator>AD</dc:creator><description>&lt;p&gt;Currently learning FP at University and I must say that your tutorial helped me a LOT. Thank you for taking the time to write this, much appreciated.&lt;/p&gt;
&lt;p&gt;Peace.&lt;/p&gt;
</description></item><item><title>re: Conclusion</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#9907773</link><pubDate>Thu, 15 Oct 2009 17:45:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907773</guid><dc:creator>Wu</dc:creator><description>&lt;p&gt;Phenomenal tutorial. I found it enlightening and enjoyable. FP has always been a very gray area for me, I never really &amp;quot;got it&amp;quot; or understood how to apply it in a conventional manner. You're tutorial has helped me in both areas. &lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;
&lt;p&gt;- Wu&lt;/p&gt;
</description></item><item><title>re: Conclusion</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#9910641</link><pubDate>Wed, 21 Oct 2009 15:20:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9910641</guid><dc:creator>EricWhite</dc:creator><description>&lt;p&gt;Hi Wu, thanks! &amp;nbsp;-Eric&lt;/p&gt;
</description></item><item><title>re: Conclusion</title><link>http://blogs.msdn.com/ericwhite/pages/Conclusion.aspx#9928369</link><pubDate>Wed, 25 Nov 2009 04:21:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9928369</guid><dc:creator>KarthikVishnu</dc:creator><description>&lt;p&gt;Great tutorial. It would be helpful if you write a similar tutorial for Expression Trees. &lt;/p&gt;
</description></item></channel></rss>