<?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>Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx</link><description>Newcomers to LINQ often find expression trees difficult to grasp. In this post I hope to show that the subject is not quite as difficult as it might appear at first. Any reader who has an intermediate level understanding of LINQ should find the material</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7346635</link><pubDate>Thu, 31 Jan 2008 13:19:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7346635</guid><dc:creator>DotNetKicks.com</dc:creator><description>&lt;p&gt;You've been kicked (a good thing) - Trackback from DotNetKicks.com&lt;/p&gt;
</description></item><item><title>Compiled Expression Dispatch Overhead</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7355075</link><pubDate>Thu, 31 Jan 2008 21:50:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7355075</guid><dc:creator>Blake Coverett</dc:creator><description>&lt;p&gt;This seems a good place to point out/ask about something I noticed back in Beta2, and have verified is still true.&lt;/p&gt;
&lt;p&gt;Curiously the dispatch overhead calling a delegate produced with Expression.Compile appears to be less than half of the overhead in calling a delegate produced either from a lambda expression or simply pointing at a static method.&lt;/p&gt;
&lt;p&gt;This is entirely counter-intuative to me. &amp;nbsp;I can provide the benchmark code if desired, but it isn't anything tricky.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7358393</link><pubDate>Thu, 31 Jan 2008 23:54:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7358393</guid><dc:creator>Charlie Calvert</dc:creator><description>&lt;p&gt;Blake,&lt;/p&gt;
&lt;p&gt;Okay, that sounds interesting. I also have to agree that it sounds a bit counter-intuitive. Can you show us some code or tell us a bit more about what you are doing to get those results? Thanks.&lt;/p&gt;
&lt;p&gt;- Charlie&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7360316</link><pubDate>Fri, 01 Feb 2008 01:33:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7360316</guid><dc:creator>Blake Coverett</dc:creator><description>&lt;p&gt;Thanks. &amp;nbsp;I'll email the whole file if you like, but the most relevant bits are short enough to include here:&lt;/p&gt;
&lt;p&gt;static long Add(long a, int b) { return a + b; }&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;Func&amp;lt;long, int, long&amp;gt; AddSD = Add;&lt;/p&gt;
&lt;p&gt;Func&amp;lt;long, int, long&amp;gt; AddAD = (a, b) =&amp;gt; a + b;&lt;/p&gt;
&lt;p&gt;Expression&amp;lt;Func&amp;lt;long, int, long&amp;gt;&amp;gt; AddExp = (a, b) =&amp;gt; a + b;&lt;/p&gt;
&lt;p&gt;Func&amp;lt;long, int, long&amp;gt; AddDD = AddExp.Compile();&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;stopwatch.Start();&lt;/p&gt;
&lt;p&gt;for(var i = 0; i &amp;lt; data.Length; ++i) total = AddDD(total, data[i]);&lt;/p&gt;
&lt;p&gt;stopwatch.Stop();&lt;/p&gt;
&lt;p&gt;Console.WriteLine(&amp;quot;Dynamic Delegate: value = {0}, ticks = {1}, {2:P}&amp;quot;, total, stopwatch.ElapsedTicks, (double)stopwatch.ElapsedTicks / baseTicks);&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;And I get results like these:&lt;/p&gt;
&lt;p&gt;Static Method: value = 2251799780130816, ticks = 1427409, 100.00 %&lt;/p&gt;
&lt;p&gt;Static Delegate: value = 2251799780130816, ticks = 2554450, 178.96 %&lt;/p&gt;
&lt;p&gt;Anonymous Delegate: value = 2251799780130816, ticks = 2451449, 171.74 %&lt;/p&gt;
&lt;p&gt;Dynamic Delegate: value = 2251799780130816, ticks = 1768117, 123.87 %&lt;/p&gt;
&lt;p&gt;Colour me puzzled.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7360351</link><pubDate>Fri, 01 Feb 2008 01:35:30 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7360351</guid><dc:creator>Blake Coverett</dc:creator><description>&lt;p&gt;I can be reached at blake at bcdev dot com, if that isn't enough to reproduce the results.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7414274</link><pubDate>Sun, 03 Feb 2008 18:37:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7414274</guid><dc:creator>marlongrech</dc:creator><description>&lt;p&gt;Great post.... LINQ ROCKS!!!!!!&lt;/p&gt;
</description></item><item><title>Link List: Language Topics, Data Service, jQuery,F#, Spec#, Specs Reading, etc...</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7435177</link><pubDate>Mon, 04 Feb 2008 15:09:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7435177</guid><dc:creator>Guru Stop</dc:creator><description>&lt;p&gt;It started an email Mohamed Hossam (AKA, Bashmohandes) sent to my company's local office here in Egypt&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7594815</link><pubDate>Mon, 11 Feb 2008 02:28:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7594815</guid><dc:creator>marlongrech</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I used the Dynamic Query API in order to embed code in XAML... Have a look...&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://marlongrech.wordpress.com/2008/02/10/embed-code-in-xaml/"&gt;http://marlongrech.wordpress.com/2008/02/10/embed-code-in-xaml/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Great JOB you guys!!!!!&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;
</description></item><item><title>LINQ Farm Seed: Using the Expression Tree Visualizer</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7679084</link><pubDate>Wed, 13 Feb 2008 21:54:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7679084</guid><dc:creator>Charlie Calvert's Community Blog</dc:creator><description>&lt;p&gt;The Visual Studio 2008 CSharp samples include several valuable tools that LINQ developers can use to&lt;/p&gt;
</description></item><item><title>LINQ Farm Seed: Using the Expression Tree Visualizer</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7679419</link><pubDate>Wed, 13 Feb 2008 22:13:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7679419</guid><dc:creator>Noticias externas</dc:creator><description>&lt;p&gt;The Visual Studio 2008 CSharp samples include several valuable tools that LINQ developers can use to&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7690058</link><pubDate>Thu, 14 Feb 2008 14:12:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7690058</guid><dc:creator>Isaac Answers</dc:creator><description>&lt;p&gt;Is It Possible To Use The Same Ideas Of LINQ In Expression Trees In Converting String To LINQ - Ex. Sql2LINQ or A Custom Language Converter To LINQ Expressions.&lt;/p&gt;
&lt;p&gt;It Seems So Powerful!&lt;/p&gt;
&lt;p&gt;Great Article.&lt;/p&gt;
</description></item><item><title>Feb 17th Links: ASP.NET, ASP.NET AJAX, Visual Studio, .NET</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7757231</link><pubDate>Sun, 17 Feb 2008 22:20:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7757231</guid><dc:creator>ASP.NET AJAX Team Blogs</dc:creator><description>&lt;p&gt;Here is the latest in my link-listing series .&amp;amp;#160; Also check out my ASP.NET Tips, Tricks and Tutorials&lt;/p&gt;
</description></item><item><title>Feb 17th Links: ASP.NET, ASP.NET AJAX, Visual Studio, .NET</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7757368</link><pubDate>Sun, 17 Feb 2008 22:29:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7757368</guid><dc:creator>BusinessRx Reading List</dc:creator><description>&lt;p&gt;Here is the latest in my link-listing series .&amp;amp;#160; Also check out my ASP.NET Tips, Tricks and Tutorials&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#7773706</link><pubDate>Mon, 18 Feb 2008 16:12:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7773706</guid><dc:creator>Mark Wisecarver</dc:creator><description>&lt;p&gt;This is awesome Charlie, thanks a bunch bro.&lt;/p&gt;
&lt;p&gt;btw, the trail ahead looks groovy.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8417281</link><pubDate>Wed, 23 Apr 2008 00:33:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8417281</guid><dc:creator>nu</dc:creator><description>&lt;p&gt;Charlie, any chance you'll be responding to Blake Coverett's question about the counter-intuitiveness of his profiling results?&lt;/p&gt;
&lt;p&gt;Great article though! &amp;nbsp;Thank you.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8452292</link><pubDate>Sat, 03 May 2008 01:05:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8452292</guid><dc:creator>Magnus Lof</dc:creator><description>&lt;p&gt;Isaac, take a look at the LINQ Dynamic Query Library. Here's a nice blog post on it by Scott Guthrie:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>Eye On .NET</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8454314</link><pubDate>Sat, 03 May 2008 12:23:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8454314</guid><dc:creator>Hisham Elbreky</dc:creator><description>&lt;p&gt;Eye On .NET is periodical listing series for .NET(Blogs, Articles, Media, Events and Announcing) I hope&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8590446</link><pubDate>Wed, 11 Jun 2008 00:22:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8590446</guid><dc:creator>Craig Lebowitz</dc:creator><description>&lt;p&gt;Nice post, your clear writing makes this easy to understand&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8620330</link><pubDate>Thu, 19 Jun 2008 08:33:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8620330</guid><dc:creator>Sonali Noolkar</dc:creator><description>&lt;p&gt;I have just started exploring Expression tree.&lt;/p&gt;
&lt;p&gt;The article is nice to get good understanding of the concept.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8625074</link><pubDate>Fri, 20 Jun 2008 11:50:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8625074</guid><dc:creator>Bert Loedeman</dc:creator><description>&lt;p&gt;Hi Charlie, &lt;/p&gt;
&lt;p&gt;Since it helped me a lot, I refer to your blog post at &lt;a rel="nofollow" target="_new" href="http://dotbert.blogspot.com/2008/06/lambda-expression-trees.html"&gt;http://dotbert.blogspot.com/2008/06/lambda-expression-trees.html&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Greetings, Bert&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8677512</link><pubDate>Tue, 01 Jul 2008 18:40:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8677512</guid><dc:creator>elena</dc:creator><description>&lt;p&gt;you're right, but of course there is also a counter-argument, which is that one should only expose interfaces on a &amp;quot;need-to-know&amp;quot; basis, and &amp;quot;just seeing what is going on&amp;quot; does not constitute a need to know.&lt;/p&gt;
</description></item><item><title>re: Compiled Expression Dispatch Overhead</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8732095</link><pubDate>Mon, 14 Jul 2008 23:11:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8732095</guid><dc:creator>Somchai</dc:creator><description>&lt;p&gt;On the performance of the Express Tree, if we are going to take the evalation of the Func and/or Expression Tree into the consideration, by refactor the code as follows:&lt;/p&gt;
&lt;p&gt;using System;&lt;/p&gt;
&lt;p&gt;using System.Collections.Generic;&lt;/p&gt;
&lt;p&gt;using System.Linq;&lt;/p&gt;
&lt;p&gt;using System.Text;&lt;/p&gt;
&lt;p&gt;//&lt;/p&gt;
&lt;p&gt;using System.Diagnostics;&lt;/p&gt;
&lt;p&gt;using System.Threading;&lt;/p&gt;
&lt;p&gt;using System.Linq.Expressions;&lt;/p&gt;
&lt;p&gt;namespace Performance&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;class Program&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static long Add(long a, int b) { return a + b; }&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static void Main(string[] args)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,&lt;/p&gt;
&lt;p&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; 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ,&lt;/p&gt;
&lt;p&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; 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 ,&lt;/p&gt;
&lt;p&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; 31, 32, 33, 34, 35, 36, 37, 38, 39, 40 ,&lt;/p&gt;
&lt;p&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; 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 ,&lt;/p&gt;
&lt;p&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; 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 ,&lt;/p&gt;
&lt;p&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; 61, 62, 63, 64, 65, 66, 67, 68, 69, 70 ,&lt;/p&gt;
&lt;p&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; 71, 72, 73, 74, 75, 76, 77, 78, 79, 80 ,&lt;/p&gt;
&lt;p&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; 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 ,&lt;/p&gt;
&lt;p&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; 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,&lt;/p&gt;
&lt;p&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; 101, 102, 103, 104, 105, 106, 107, 108, 109, 110 ,&lt;/p&gt;
&lt;p&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; 111, 112, 113, 114, 115, 116, 117, 118, 119, 120 ,&lt;/p&gt;
&lt;p&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; 121, 122, 123, 124, 125, 126, 127, 128, 129, 130 ,&lt;/p&gt;
&lt;p&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; 131, 132, 133, 134, 135, 136, 137, 138, 139, 140 ,&lt;/p&gt;
&lt;p&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; 141, 142, 143, 144, 145, 146, 147, 148, 149, 150 ,&lt;/p&gt;
&lt;p&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; 151, 152, 153, 154, 155, 156, 157, 158, 159, 160 ,&lt;/p&gt;
&lt;p&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; 161, 162, 163, 164, 165, 166, 167, 168, 169, 170 ,&lt;/p&gt;
&lt;p&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; 171, 172, 173, 174, 175, 176, 177, 178, 179, 180 ,&lt;/p&gt;
&lt;p&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; 181, 182, 183, 184, 185, 186, 187, 188, 189, 190 ,&lt;/p&gt;
&lt;p&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; 191, 192, 193, 194, 195, 196, 197, 198, 199, 200&lt;/p&gt;
&lt;p&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;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long normFactor = RunStaticMethod(data);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RunStaticDelegate(data, normFactor);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RunAnonymousDelegate(data, normFactor);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;RunDynamicDelegate(data, normFactor);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.ReadLine();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static long RunStaticMethod(int[] data)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long total = 0;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Stopwatch stopwatch = new Stopwatch();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stopwatch.Start();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Call the Static Method directly&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (var i = 0; i &amp;lt; data.Length; ++i) total = Add(total, data[i]);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stopwatch.Stop();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double baseTicks = stopwatch.ElapsedTicks; &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine(&amp;quot;Static Method &amp;nbsp; &amp;nbsp; &amp;nbsp;: value = {0}, ticks = {1}, {2:P}&amp;quot;, total, stopwatch.ElapsedTicks, (double)stopwatch.ElapsedTicks / baseTicks);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return stopwatch.ElapsedTicks;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static void RunStaticDelegate(int[] data, long normalizedFactor)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long total = 0;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Stopwatch stopwatch = new Stopwatch();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stopwatch.Start();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Static Delegate&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Func&amp;lt;long, int, long&amp;gt; AddSD = Add;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//stopwatch.Start();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (var i = 0; i &amp;lt; data.Length; ++i) total = AddSD(total, data[i]);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stopwatch.Stop();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double baseTicks = normalizedFactor; &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine(&amp;quot;Static Delegate &amp;nbsp; &amp;nbsp;: value = {0}, ticks = {1}, {2:P}&amp;quot;, total, stopwatch.ElapsedTicks, (double)stopwatch.ElapsedTicks / baseTicks);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static void RunAnonymousDelegate(int[] data, long normalizedFactor)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long total = 0;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Stopwatch stopwatch = new Stopwatch();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stopwatch.Start();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Anonymous Delegate&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Func&amp;lt;long, int, long&amp;gt; AddAD = (a, b) =&amp;gt; a + b;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//stopwatch.Start();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (var i = 0; i &amp;lt; data.Length; ++i) total = AddAD(total, data[i]);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stopwatch.Stop();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double baseTicks = normalizedFactor;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine(&amp;quot;Anonymous Delegate : value = {0}, ticks = {1}, {2:P}&amp;quot;, total, stopwatch.ElapsedTicks, (double)stopwatch.ElapsedTicks / baseTicks);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static void RunDynamicDelegate(int[] data, long normalizedFactor)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;long total = 0;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Stopwatch stopwatch = new Stopwatch();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stopwatch.Start();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// The following two statements are used together&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Expression&amp;lt;Func&amp;lt;long, int, long&amp;gt;&amp;gt; AddExp = (a, b) =&amp;gt; a + b;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Func&amp;lt;long, int, long&amp;gt; AddDD = AddExp.Compile();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//stopwatch.Start();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (var i = 0; i &amp;lt; data.Length; ++i) total = AddDD(total, data[i]); //Speedy DD&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stopwatch.Stop();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;double baseTicks = normalizedFactor; &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine(&amp;quot;Dynamic Delegate &amp;nbsp; : value = {0}, ticks = {1}, {2:P}&amp;quot;, total, stopwatch.ElapsedTicks, (double)stopwatch.ElapsedTicks / baseTicks);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;The outcome indicates that the Expression Tree is slowest. The point is that the code will get executed sooner or later. Perhaps, we should take that time into our consideration.&lt;/p&gt;
&lt;p&gt;And here is the comparison:&lt;/p&gt;
&lt;p&gt;============================&lt;/p&gt;
&lt;p&gt;When Stopwatch is triggered AFTER the Func and/or Expression Tree evaluation:&lt;/p&gt;
&lt;p&gt;Static Method &amp;nbsp; &amp;nbsp; &amp;nbsp;: value = 20100, ticks = 434069, 100.00 %&lt;/p&gt;
&lt;p&gt;Static Delegate &amp;nbsp; &amp;nbsp;: value = 20100, ticks = 11713, 2.70 %&lt;/p&gt;
&lt;p&gt;Anonymous Delegate : value = 20100, ticks = 410176, 94.50 %&lt;/p&gt;
&lt;p&gt;Dynamic Delegate &amp;nbsp; : value = 20100, ticks = 9426, 2.17 %&lt;/p&gt;
&lt;p&gt;.VS.&lt;/p&gt;
&lt;p&gt;When Stopwatch is triggered BEFORE the Func and/or Expression Tree evaluation:&lt;/p&gt;
&lt;p&gt;Static Method &amp;nbsp; &amp;nbsp; &amp;nbsp;: value = 20100, ticks = 434928, 100.00 %&lt;/p&gt;
&lt;p&gt;Static Delegate &amp;nbsp; &amp;nbsp;: value = 20100, ticks = 13183, 3.03 %&lt;/p&gt;
&lt;p&gt;Anonymous Delegate : value = 20100, ticks = 620347, 142.63 %&lt;/p&gt;
&lt;p&gt;Dynamic Delegate &amp;nbsp; : value = 20100, ticks = 14994281, 3,447.53 %&lt;/p&gt;
</description></item><item><title>StaticStringDictionary - Fast Switching with LINQ revisited</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8904150</link><pubDate>Thu, 28 Aug 2008 23:58:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8904150</guid><dc:creator>Code Beside</dc:creator><description>&lt;p&gt;StaticStringDictionary - Fast Switching with LINQ revisited&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8904256</link><pubDate>Fri, 29 Aug 2008 01:19:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8904256</guid><dc:creator>Erik</dc:creator><description>&lt;p&gt;The comment above's results are still a bit skewed. In your testing scenario we see Static Method takes a good deal longer to execute than static delegate. This is also a bit counter-intuitive. The expectation is the two should run nearly in the same time.&lt;/p&gt;
&lt;p&gt;In fact this is observed if you run the test consecutively (call the function blocks twice. You see there is the initial translation of the IL to machine language time being added to whoever is unfortunate enough to be measured first.&lt;/p&gt;
&lt;p&gt;If you rerun the tests with the first two calls swapped, suddenly the Delegate takes a great deal longer. Running them back-to-back twice reflects very few (but always more) ticks longer for the static delegate to execute over static method. This is observed regardless of order.&lt;/p&gt;
&lt;p&gt;I'm sure an examination of the IL would show an extra instruction somewhere - the two don't appear to compile to the same instructions to get executed. Someone with time could verify this.&lt;/p&gt;
&lt;p&gt;To see this, call your function as you do here, then before ending, call all four again but simply move the static delegate above static method. Examine the tick counts. The delegate always takes longer than method.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#8967293</link><pubDate>Sat, 27 Sep 2008 05:35:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8967293</guid><dc:creator>Blake Coverett</dc:creator><description>&lt;p&gt;Somchai misses the point of my question and benchmark entirely. &amp;nbsp;Apart from&lt;/p&gt;
&lt;p&gt;Yes, creating delegates and compiling/JIT'ing expression trees has an overhead, but that's not what I found unexpected. &amp;nbsp;The odd thing is the speed of dispatch of the resulting calls after they are JIT'd. &amp;nbsp;Unfortunately I haven't heard anything back from Charlie on this.&lt;/p&gt;
</description></item><item><title>[MSTD09] Programmation dynamique avec .net</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9424799</link><pubDate>Sun, 15 Feb 2009 23:58:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9424799</guid><dc:creator>Atteint de JavaScriptite Aiguë [Cyril Durand]</dc:creator><description>&lt;p&gt;Lors des techdays 2009, je suis all&amp;#233; voir la session “ Programmation dynamique ” de Mitsu Furuta et Simon&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9426486</link><pubDate>Tue, 17 Feb 2009 00:21:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9426486</guid><dc:creator>Charles Prakash Dasari</dc:creator><description>&lt;p&gt;This is a great post. Thanks for a good learning.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9750203</link><pubDate>Sun, 14 Jun 2009 15:45:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9750203</guid><dc:creator>Dylan Borg</dc:creator><description>&lt;p&gt;Thanks for this entry. It really explains part of the DLR to me in a better way.&lt;/p&gt;
</description></item><item><title>C# 4.0 Part 4 - Understanding Expression Tree</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9795079</link><pubDate>Sun, 21 Jun 2009 12:48:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9795079</guid><dc:creator>שלמה גולדברג</dc:creator><description>&lt;p&gt;אז בפוסט הקודם ראינו שלמעשה אין ב - Runtime טיפוס dynamic, וכל מה שאנחנו משימים לתוך dynamic עובר להיות&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9858497</link><pubDate>Thu, 06 Aug 2009 02:15:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9858497</guid><dc:creator>sbndqa</dc:creator><description>&lt;p&gt;npoBIS &amp;nbsp;&amp;lt;a href=&amp;quot;&lt;a rel="nofollow" target="_new" href="http://rdrsmmanfghc.com/&amp;quot;&amp;gt;rdrsmmanfghc&amp;lt;/a&amp;gt;"&gt;http://rdrsmmanfghc.com/&amp;quot;&amp;gt;rdrsmmanfghc&amp;lt;/a&amp;gt;&lt;/a&gt;, [url=&lt;a rel="nofollow" target="_new" href="http://zlpfeeucnkcr.com/"&gt;http://zlpfeeucnkcr.com/&lt;/a&gt;]zlpfeeucnkcr[/url], [link=&lt;a rel="nofollow" target="_new" href="http://ibhrffvvyfvr.com/"&gt;http://ibhrffvvyfvr.com/&lt;/a&gt;]ibhrffvvyfvr[/link], &lt;a rel="nofollow" target="_new" href="http://jqmmkzbtfuuv.com/"&gt;http://jqmmkzbtfuuv.com/&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9891436</link><pubDate>Fri, 04 Sep 2009 18:19:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9891436</guid><dc:creator>webcliff</dc:creator><description>&lt;p&gt;Expression Tree Explained in plain language.&lt;/p&gt;
&lt;p&gt;One of the best blog post I have ever read.&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9896446</link><pubDate>Thu, 17 Sep 2009 21:26:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9896446</guid><dc:creator>ID10T</dc:creator><description>&lt;p&gt;Thank you for this! You have made the complex very simple to understand, which is a rare thing!&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9902891</link><pubDate>Sun, 04 Oct 2009 10:44:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9902891</guid><dc:creator>Sam</dc:creator><description>&lt;p&gt;Hi, Is it possible convert string to Expression?For the code is:&lt;/p&gt;
&lt;p&gt;public void testExp(Func&amp;lt;T,object&amp;gt; func)&lt;/p&gt;
&lt;p&gt;{...}&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;string exp=&amp;quot;x=&amp;gt;x.name&amp;quot;;&lt;/p&gt;
&lt;p&gt;testExp(SOME_FUNCTION(exp));&lt;/p&gt;
&lt;p&gt;Dose there exist the function(SOME_FUNCTION) I used above?&lt;/p&gt;
</description></item><item><title>re: Expression Tree Basics</title><link>http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx#9929231</link><pubDate>Fri, 27 Nov 2009 00:13:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9929231</guid><dc:creator>Shobz</dc:creator><description>&lt;p&gt;Very Good blog clarifying the basic concepts really well&lt;/p&gt;
</description></item></channel></rss>