<?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>LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx</link><description>Implementing OrderBy Today's topic is translating those order-by clauses. Fortunately, there is only one way to do ordering, and that's using the LINQ ordering specific query operators. The bad news is that there are four different operators.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Techy News Blog &amp;raquo; LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5386296</link><pubDate>Wed, 10 Oct 2007 01:07:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5386296</guid><dc:creator>Techy News Blog » LINQ: Building an IQueryable Provider - Part VIII</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://www.artofbam.com/wordpress/?p=6572"&gt;http://www.artofbam.com/wordpress/?p=6572&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5386325</link><pubDate>Wed, 10 Oct 2007 01:14:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5386325</guid><dc:creator>Noticias externas</dc:creator><description>&lt;p&gt;Implementing OrderBy Today&amp;amp;#39;s topic is translating those order-by clauses. Fortunately, there is only&lt;/p&gt;
</description></item><item><title>LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5386802</link><pubDate>Wed, 10 Oct 2007 02:29:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5386802</guid><dc:creator>Roller</dc:creator><description>&lt;p&gt;Implementing OrderBy Today's topic is translating those order-by clauses. Fortunately, there is only&lt;/p&gt;
</description></item><item><title>re: LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5391758</link><pubDate>Wed, 10 Oct 2007 17:27:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5391758</guid><dc:creator>Ron K.</dc:creator><description>&lt;p&gt;From a perf standpoint, are these two queries the same?&lt;/p&gt;
&lt;p&gt;SELECT t0.CustomerID, t0.ContactName, t0.Phone, t0.City, t0.Country&lt;/p&gt;
&lt;p&gt;	FROM Customers AS t0&lt;/p&gt;
&lt;p&gt;	ORDER BY t0.Country, t0.City&lt;/p&gt;
&lt;p&gt;SELECT t1.CustomerID, t1.ContactName, t1.Phone, t1.City, t1.Country&lt;/p&gt;
&lt;p&gt;	FROM (&lt;/p&gt;
&lt;p&gt; &amp;nbsp;		SELECT t0.CustomerID, t0.ContactName, t0.Phone, t0.City, t0.Country&lt;/p&gt;
&lt;p&gt;		 &amp;nbsp;FROM Customers AS t0&lt;/p&gt;
&lt;p&gt;	) AS t1&lt;/p&gt;
&lt;p&gt;ORDER BY t1.Country, t1.City&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;</description></item><item><title>re: LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5391878</link><pubDate>Wed, 10 Oct 2007 17:59:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5391878</guid><dc:creator>mattwar</dc:creator><description>&lt;p&gt;Yes, they'll build the same query plan on the server, as they are logically the same thing. The only difference is the second one has more text to parse. The server is free to rearrange any query you give it as long as maintains the same semantics. (The results are the same.)&lt;/p&gt;
</description></item><item><title>re: LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5391981</link><pubDate>Wed, 10 Oct 2007 18:18:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5391981</guid><dc:creator>vadym</dc:creator><description>&lt;p&gt;Can someone suggest a way of creating a flat query instead of a hierarchical one? So far the query binder walks through an expression tree and adds a new select layer over the previous query.&lt;/p&gt;
&lt;p&gt;I tried to create a query flattener that picks up a SelectExpression object and pulls relevant parts of all nested SelectExpressions to the top SelectExpression. So if I had the following query&lt;/p&gt;
&lt;p&gt;SELECT t2.ContactName, t2.City, t2.Country&lt;/p&gt;
&lt;p&gt;FROM (&lt;/p&gt;
&lt;p&gt; &amp;nbsp;SELECT t1.ContactName, t1.City, t1.Country&lt;/p&gt;
&lt;p&gt; &amp;nbsp;FROM (&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;SELECT t0.ContactName, t0.City, t0.Country, t0.CustomerID, t0.Phone&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;FROM Customers AS t0&lt;/p&gt;
&lt;p&gt; &amp;nbsp;) AS t1&lt;/p&gt;
&lt;p&gt;) AS t2&lt;/p&gt;
&lt;p&gt;WHERE (t2.City = 'London')&lt;/p&gt;
&lt;p&gt;I would pull the name of the table from the deepest SelectExpression, the projection clause (the columns to select) from the top-level SelectExpression and so on.&lt;/p&gt;
&lt;p&gt;This solution is quite nice in general. By creating another visitor (QueryFlattner calss) that post-processes the output of the QueryBinder, I don’t intervene in binding (Because I believe Matt will keep on posting on LINQ and QueryBinder will change with time. But on the other hand why to create a structure that must always be post processed and not to create the one I need?) Anyways, when it came to the implementation I figured out the lack of consistency in flattening rules. Things got much worse when queries got more complicated (e.g. joining more than 2 entities).&lt;/p&gt;
</description></item><item><title>re: LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5393252</link><pubDate>Wed, 10 Oct 2007 22:41:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5393252</guid><dc:creator>rogerj</dc:creator><description>&lt;p&gt;Pingback from &lt;a rel="nofollow" target="_new" href="http://oakleafblog.blogspot.com/2007/10/linq-and-entity-framework-posts-for_09.html"&gt;http://oakleafblog.blogspot.com/2007/10/linq-and-entity-framework-posts-for_09.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Community Convergence XXXIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5455837</link><pubDate>Mon, 15 Oct 2007 03:55:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5455837</guid><dc:creator>Charlie Calvert's Community Blog</dc:creator><description>&lt;p&gt;Welcome to the thirty-third edition of Community Convergence. This week we have a new video called Programming&lt;/p&gt;</description></item><item><title>Community Convergence XXXIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5456030</link><pubDate>Mon, 15 Oct 2007 04:17:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5456030</guid><dc:creator>Charlie Calvert's Community Blog</dc:creator><description>&lt;p&gt;Welcome to the thirty-third edition of Community Convergence. This week we have a new video called Programming&lt;/p&gt;</description></item><item><title>Community Convergence XXXIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5456103</link><pubDate>Mon, 15 Oct 2007 04:25:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5456103</guid><dc:creator>Charlie Calvert's Community Blog</dc:creator><description>&lt;p&gt;Welcome to the thirty-third edition of Community Convergence. This week we have a new video called Programming&lt;/p&gt;</description></item><item><title>Community Convergence XXXIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5461117</link><pubDate>Mon, 15 Oct 2007 15:02:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5461117</guid><dc:creator>Charlie Calvert's Community Blog</dc:creator><description>&lt;p&gt;Welcome to the thirty-third edition of Community Convergence. This week we have a new video called Programming&lt;/p&gt;</description></item><item><title>re: LINQ: Building an IQueryable Provider - Part VIII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#5622478</link><pubDate>Tue, 23 Oct 2007 14:20:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5622478</guid><dc:creator>hasmukhkp</dc:creator><description>&lt;p&gt;I was wondering whether this code works for Properties instead of fields.....&lt;/p&gt;
&lt;p&gt;Could you guide me for the same?&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Hasmukh&lt;/p&gt;
</description></item><item><title>Developing Linq to LLBLGen Pro, part 10</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#6827826</link><pubDate>Fri, 21 Dec 2007 17:43:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6827826</guid><dc:creator>Community Blogs</dc:creator><description>&lt;p&gt;(This is part of an on-going series of articles, started here ) Whoa, almost a month without an update&lt;/p&gt;
</description></item><item><title>TerraServer Sample: A LINQ Provider</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#7011313</link><pubDate>Mon, 07 Jan 2008 04:37:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7011313</guid><dc:creator>Charlie Calvert's Community Blog</dc:creator><description>&lt;p&gt;Over the holidays Alex Turner, Mary Deyo and I added a new sample to the downloadable version of the&lt;/p&gt;</description></item><item><title>LINQ: Building an IQueryable Provider - Part IX</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#7138578</link><pubDate>Thu, 17 Jan 2008 06:08:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7138578</guid><dc:creator>The Wayward WebLog</dc:creator><description>&lt;p&gt;This is the nineth in a series of posts on how to build a LINQ IQueryable provider. If you have not read&lt;/p&gt;
</description></item><item><title>Subtree substitution, thanks to microsoft ExpressionVisitor</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#8047559</link><pubDate>Wed, 05 Mar 2008 10:24:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8047559</guid><dc:creator>Alkampfer's Place</dc:creator><description>&lt;p&gt;Subtree substitution, thanks to microsoft ExpressionVisitor&lt;/p&gt;
</description></item><item><title>Developing Linq to LLBLGen Pro, part 10</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#8394830</link><pubDate>Tue, 15 Apr 2008 00:29:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8394830</guid><dc:creator>.Net World</dc:creator><description>&lt;p&gt;(This is part of an on-going series of articles, started here ) Whoa, almost a month without an update&lt;/p&gt;
</description></item><item><title>LINQ: Building an IQueryable Provider - Part X</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#8710292</link><pubDate>Wed, 09 Jul 2008 02:29:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8710292</guid><dc:creator>The Wayward WebLog</dc:creator><description>&lt;p&gt;This is the tenth in a series of posts on how to build a LINQ IQueryable provider. If you have not read the previous posts you'll want to find a nice shady tree, relax and meditate on why your world is so confused and full of meaningless tasks that it&lt;/p&gt;
</description></item><item><title>LINQ: Building an IQueryable Provider - Part XI</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#8732028</link><pubDate>Mon, 14 Jul 2008 22:32:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8732028</guid><dc:creator>The Wayward WebLog</dc:creator><description>&lt;p&gt;This is the eleventh in a series of posts on how to build a LINQ IQueryable provider. If you have not read the previous posts you’ll want to do so before proceeding, or at least before proceeding to copy the code into your own project and telling your&lt;/p&gt;
</description></item><item><title>Building a LINQ IQueryable Provider - Part XII</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#9114761</link><pubDate>Tue, 18 Nov 2008 04:04:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9114761</guid><dc:creator>The Wayward WebLog</dc:creator><description>&lt;p&gt;This is the twelfth in a series of posts on how to build a LINQ IQueryable provider. If you have not&lt;/p&gt;
</description></item><item><title>LINQ links</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#9119369</link><pubDate>Tue, 18 Nov 2008 20:27:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9119369</guid><dc:creator>The Wayward WebLog</dc:creator><description>&lt;p&gt;Part I - Reusable IQueryable base classes Part II - Where and reusable Expression tree visitor Part II&lt;/p&gt;
</description></item><item><title>LINQ: Building an IQueryable provider series</title><link>http://blogs.msdn.com/mattwar/archive/2007/10/09/linq-building-an-iqueryable-provider-part-viii.aspx#9490103</link><pubDate>Thu, 19 Mar 2009 17:51:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9490103</guid><dc:creator>Floating Heart</dc:creator><description>&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/mattwar/pages/linq-links.aspx"&gt;http://blogs.msdn.com/mattwar/pages/linq-links.aspx&lt;/a&gt; Here&amp;amp;#39;s a list of all the posts in the building&lt;/p&gt;
</description></item></channel></rss>