<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.Net Smoothie &#187; IGrouping</title>
	<atom:link href="http://www.richardbushnell.net/tag/igrouping/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.richardbushnell.net</link>
	<description></description>
	<lastBuildDate>Wed, 30 Dec 2009 11:42:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How to Use Grouping in C# LINQ Syntax</title>
		<link>http://www.richardbushnell.net/2008/02/08/how-to-use-grouping-in-c-linq-syntax/</link>
		<comments>http://www.richardbushnell.net/2008/02/08/how-to-use-grouping-in-c-linq-syntax/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 21:22:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[C# 3.0]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[IGrouping]]></category>

		<guid isPermaLink="false">http://richardbushnell.net/index.php/2008/02/08/how-to-use-grouping-in-c-linq-syntax/</guid>
		<description><![CDATA[When you started using LINQ, did you think it looked like SQL? I did. The more I learned LINQ, the more I realized it wasn&#8217;t anything like SQL. Take grouping, for example. Because LINQ has a group by statement, and it looks like SQL, I assumed that the syntax for grouping in LINQ would be [...]]]></description>
			<content:encoded><![CDATA[
<!-- using Like-Button-Plugin-For-Wordpress [v4.2] | by http://www.gb-world.net -->
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.richardbushnell.net%2F2008%2F02%2F08%2Fhow-to-use-grouping-in-c-linq-syntax%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="false" style="border:none; overflow:; width:450px; height:30px"></iframe>
<!-- using Like-Button-Plugin-For-Wordpress [v4.2] | by http://www.gb-world.net -->
<br><p>When you started using LINQ, did you think it looked like SQL? I did.</p>
<p>The more I learned LINQ, the more I realized it <em>wasn&#8217;t anything like</em> SQL. Take grouping, for example. Because LINQ has a <span style="color: blue">group by </span>statement, and it looks like SQL, I assumed that the syntax for grouping in LINQ would be just like SQL. Ha ha! Wrong! As soon as I tried to use it, I discovered that the LINQ syntax is not only nothing like the SQL equivalent, but the whole grouping concept in LINQ is completely different too.</p>
<p>At first glance, the two syntaxes look <em>slightly </em>similar.</p>
<p>SQL:</p>
<pre class="code"><span style="color: blue">select </span>ReportsTo<span style="color: gray">, </span><span style="color: magenta">count</span><span style="color: gray">(</span>LastName<span style="color: gray">) </span><span style="color: blue">as </span>NameCount
<span style="color: blue">from </span>Employees
<span style="color: blue">group by </span>ReportsTo</pre>
<p><a href="http://11011.net/software/vspaste"></a><a href="http://11011.net/software/vspaste"></a></p>
<p>LINQ (C#):</p>
<pre class="code"><span style="color: blue">from </span>employee <span style="color: blue">in </span>Employees
<span style="color: blue">group </span>employee <span style="color: blue">by </span>employee.ReportsTo</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Ignoring the omission of the select statement from LINQ, and the requirement of a range variable, they do look similar. But looks can be deceiving.</p>
<p>Let me explain why.</p>
<p><span id="more-48"></span></p>
<h2>Grouping in SQL</h2>
<p>In SQL, you typically group a set of entities using the following syntax:</p>
<pre class="code"><span style="color: blue">select </span>ReportsTo<span style="color: gray">, </span><span style="color: magenta">count</span><span style="color: gray">(</span>LastName<span style="color: gray">) </span><span style="color: blue">as </span>NameCount
<span style="color: blue">from </span>Employees
<span style="color: blue">group by </span>ReportsTo</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>This kind of query results in a simple table with two columns: ReportsTo and NameCount. The count of the names was grouped into a single column using an aggregate function.</p>
<p>Of course, this is a simple example; you could do much more complex grouping by using more expressions in the aggregation or the group by statement. Whatever the grouping though, the result is a flat table.</p>
<p>LINQ is different. Completely different.</p>
<h2>Grouping in LINQ</h2>
<p>Before you can understand the LINQ syntax, you have to understand how grouping works in LINQ.</p>
<p>When you use the <span style="color: blue">group by </span>statement, the C# compiler translates it to the LINQ Enumerable&#8217;s GroupBy extension method. The GroupBy method returns an object of type</p>
<pre class="code"><span style="color: #2b91af">  IEnumerable</span>&lt;<span style="color: #2b91af">IGrouping</span>&lt;TKey, TSource&gt;&gt;</pre>
<p>The GroupBy method takes a parameter of a delegate which specifies the key of each grouping. The key is defined to be of type TKey, and is usually inferred by the compiler depending on the expression.</p>
<p>The key to understanding the C# query syntax is that you <em>don&#8217;t</em> get back a <em>flat</em> structure from <span style="color: blue">group by</span>, as you would with SQL. You actually get an &#8220;IEnumerable&#8221; of &#8220;IGrouping&#8221; objects.</p>
<p>The IGrouping interface has only one property, &#8220;Key&#8221;, and implements IEnumerable&lt;TElement&gt;. Again, TElement is usually inferred. &#8220;Key&#8221; is typed as the generic type you define for TKey. For the minute, that&#8217;s not so important, so we&#8217;ll come back to the Key later.</p>
<p>One of the first indications that LINQ is different to SQL is that you discover it is possible to finish a LINQ statement with a <span style="color: blue">group by </span>statement without needing a Select. As IGrouping implements IEnumerable, <span style="color: blue">group by </span>actually returns an IEnumerable of IEnumerable. The result is a set of sets. It&#8217;s <em>not</em> a flat table. To use it, you have to iterate over it again or perform another operation on the set.</p>
<p>Let&#8217;s see if an example can make it clearer.</p>
<p>When grouping a set of employees, you might use the following code:</p>
<pre class="code"><span style="color: blue">var </span>emp1 = <span style="color: blue">new </span>{ ReportsTo = 1, LastName = <span style="color: #a31515">"Richard" </span>};
<span style="color: blue">var </span>emp2 = <span style="color: blue">new </span>{ ReportsTo = 1, LastName = <span style="color: #a31515">"Christopher" </span>};
<span style="color: blue">var </span>emp3 = <span style="color: blue">new </span>{ ReportsTo = 2, LastName = <span style="color: #a31515">"John" </span>};
<span style="color: blue">var </span>emp4 = <span style="color: blue">new </span>{ ReportsTo = 2, LastName = <span style="color: #a31515">"Greg" </span>};
<span style="color: blue">var </span>employees = <span style="color: blue">new</span>[] { emp1, emp2, emp3, emp4 };

<span style="color: blue">var </span>groups =
<span style="color: blue">  from </span>employee <span style="color: blue">in </span>employees
<span style="color: blue">  group </span>employee <span style="color: blue">by </span>employee.ReportsTo;

<span style="color: blue">foreach </span>(<span style="color: blue">var </span>group <span style="color: blue">in </span>groups)
  <span style="color: #2b91af">Console</span>.WriteLine(<span style="color: #a31515">"{0} employees report to {1}."</span>,
    group.Key, group.Count());</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>(Don&#8217;t worry about the anonymous class definitions for now. You just have to know that my employee objects are all treated as the same type internally, so this is valid C# code.)</p>
<p>The employees variable is of type IEnumerable, so it can be used in a LINQ statement. The groups variable is also an IEnumerable, as it is a set of results, as usually returned by a LINQ statement. Remember though, <em>it&#8217;s not like </em>the set you would get back in a SQL statement. It is actually an IEnumerable of IGrouping, or an IEnumerable of IEnumerable.</p>
<p>To do something with the grouping, you have to either treat it as another IEnumerable, and iterate over it, or use methods like Count() to do something with it.</p>
<pre class="code"><span style="color: blue">foreach </span><span style="color: black">(</span><span style="color: blue">var <span style="color: black">group </span>in </span><span style="color: black">groups)
  </span><span style="color: blue">foreach </span><span style="color: black">(</span><span style="color: blue">var </span><span style="color: black">employee </span><span style="color: blue">in <span style="color: black">group</span></span><span style="color: black">)
    Console.WriteLine(</span><span style="color: #dc1414">"{0} reports to {1}"</span><span style="color: black">,
      employee.LastName, employee.ReportsTo);</span></pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>This is how LINQPad shows what is contained in the groups variable:</p>
<table class="MsoNormalTable" style="border: medium none ; margin-left: 1.2pt; border-collapse: collapse" border="1" cellpadding="0" cellspacing="0">
<tr>
<td style="border: 1pt solid #aaaaaa; padding: 0cm 2.4pt 1.2pt 1.2pt; background: #1177bb none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><strong><span style="font-size: 8.5pt; color: white; font-family: 'Tahoma','sans-serif'"><span><u><span>IEnumerable&lt;IGrouping&lt;Int32,&gt;&gt;</span></u></span> </span></strong></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170); border-width: medium 1pt 1pt; padding: 1.2pt 2.4pt" valign="top">
<table class="MsoNormalTable" style="border-collapse: collapse" border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="padding: 0cm 1.2pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><em><span style="font-size: 9.5pt; color: green; font-family: 'Verdana','sans-serif'">Key=</span></em><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'"> </span></p>
</td>
<td style="padding: 0cm 1.2pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">1 </span></p>
</td>
</tr>
</table>
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal">&nbsp;</p>
<table class="MsoNormalTable" style="border: medium none ; margin-left: 1.2pt; border-collapse: collapse" border="1" cellpadding="0" cellspacing="0">
<tr>
<td style="border: 1pt solid #aaaaaa; padding: 0cm 2.4pt 1.2pt 1.2pt; background: #1177bb none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" colspan="2" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><strong><span style="font-size: 8.5pt; color: white; font-family: 'Tahoma','sans-serif'"><span><u><span>IGrouping&lt;Int32,&gt; (2 items)</span></u></span> </span></strong></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(119, 119, 119) rgb(119, 119, 119); border-width: medium 1pt 1pt; padding: 1.2pt 2.4pt; background: #dddddd none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><strong><span style="font-size: 8.5pt; font-family: 'Tahoma','sans-serif'">ReportsTo </span></strong></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(119, 119, 119) rgb(119, 119, 119) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 1.2pt 2.4pt; background: #dddddd none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><strong><span style="font-size: 8.5pt; font-family: 'Tahoma','sans-serif'">LastName </span></strong></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170); border-width: medium 1pt 1pt; padding: 1.2pt 2.4pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">1 </span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 1.2pt 2.4pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">Richard </span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170); border-width: medium 1pt 1pt; padding: 1.2pt 2.4pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">1 </span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 1.2pt 2.4pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">Christopher </span></p>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170); border-width: medium 1pt 1pt; padding: 1.2pt 2.4pt" valign="top">
<table class="MsoNormalTable" style="border-collapse: collapse" border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="padding: 0cm 1.2pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><em><span style="font-size: 9.5pt; color: green; font-family: 'Verdana','sans-serif'">Key=</span></em><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'"> </span></p>
</td>
<td style="padding: 0cm 1.2pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">2 </span></p>
</td>
</tr>
</table>
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="display: none; font-size: 9.5pt; font-family: 'Verdana','sans-serif'"></span></p>
<table class="MsoNormalTable" style="border: medium none ; margin-left: 1.2pt; border-collapse: collapse" border="1" cellpadding="0" cellspacing="0">
<tr>
<td style="border: 1pt solid #aaaaaa; padding: 0cm 2.4pt 1.2pt 1.2pt; background: #1177bb none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" colspan="2" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><strong><span style="font-size: 8.5pt; color: white; font-family: 'Tahoma','sans-serif'"><span><u><span>IGrouping&lt;Int32,&gt; (2 items)</span></u></span> </span></strong></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(119, 119, 119) rgb(119, 119, 119); border-width: medium 1pt 1pt; padding: 1.2pt 2.4pt; background: #dddddd none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><strong><span style="font-size: 8.5pt; font-family: 'Tahoma','sans-serif'">ReportsTo </span></strong></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(119, 119, 119) rgb(119, 119, 119) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 1.2pt 2.4pt; background: #dddddd none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><strong><span style="font-size: 8.5pt; font-family: 'Tahoma','sans-serif'">LastName </span></strong></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170); border-width: medium 1pt 1pt; padding: 1.2pt 2.4pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">2 </span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 1.2pt 2.4pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">John </span></p>
</td>
</tr>
<tr>
<td style="border-style: none solid solid; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170); border-width: medium 1pt 1pt; padding: 1.2pt 2.4pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">2 </span></p>
</td>
<td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(170, 170, 170) rgb(170, 170, 170) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 1.2pt 2.4pt" valign="top">
<p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal"><span style="font-size: 9.5pt; font-family: 'Verdana','sans-serif'">Greg </span></p>
</td>
</tr>
</table>
</td>
</tr>
</table>
<p>Notice that each IGrouping has an associated Key property of type Int32.</p>
<h2>Grouping Syntax in LINQ</h2>
<p class="MsoNormal">So now it should be a little easier to understand how to use the LINQ <span style="color: blue">group by</span> statement.</p>
<p class="MsoNormal">In LINQ, you always need to <strong>declare the range variable </strong>between <span style="color: blue">group</span> and <span style="color: blue">by</span>.</p>
<p class="MsoNormal"><font size="2"><font face="Courier New"><span style="color: blue">from </span>employee <span style="color: blue">in </span>Employees </font></font></p>
<p><span style="color: blue"><font size="2"><font face="Courier New">group </font></font></span><font size="2"><font face="Courier New">employee <span style="color: blue">by </span>employee.ReportsTo</font></font></p>
<p class="MsoNormal">After <span style="color: blue">by</span>, you give an expression which returns the value for the <span style="color: blue">Key</span>. The enumeration is then split into groups of <span style="color: blue">IGroupings </span>where the key for each item in that <span style="color: blue">IGrouping</span> is the same.</p>
<p class="MsoNormal">So here, we specify the employee.ReportsTo variable as the key. Each employee with a different value for ReportsTo creates a new <span style="color: blue">IGrouping</span> with a <span style="color: blue">Key</span> of that value. The employee is then added to that new <span style="color: blue">IGrouping</span> as an item. The <span style="color: blue">IGrouping</span> is then added to the returned <span style="color: blue">IEnumerable&lt;<span style="color: blue">IGrouping&lt;&gt;<strong>&gt;</strong></span></span>.</p>
<p class="MsoNormal">The next time an item in the employees variable has the same value for ReportsTo as the <span style="color: blue">Key</span> property of an already-existing <span style="color: blue">IGrouping</span> object, the item is simply added to that <span style="color: blue">IGrouping</span>.</p>
<p class="MsoNormal">Of course, that&#8217;s probably not the way it works under the covers. But I&#8217;m not trying to specify the algorithm, just what happens in the end result.</p>
<p class="MsoNormal">In the end, an object implementing <span style="color: blue">IEnumerable&lt;<span style="color: blue">IGrouping&lt;&gt;<strong>&gt;</strong></span></span> is returned by the LINQ statement. As each item in the <span style="color: blue">IEnumerable </span>is an <span style="color: blue"><span style="color: blue">IGrouping</span></span>, you can either use it&#8217;s <span style="color: blue">Key</span> or treat it as an <span style="color: blue">IEnumerable</span>.</p>
<p class="MsoNormal">So there you have it. Just remember, group by is nothing like SQL, and it returns an <span style="color: blue">IEnumerable </span>of <span style="color: blue">IGrouping</span>, and you should stay happy.</p>
<p class="MsoNormal">At least until you meet SelectMany&#8230; :=)</p>
<div style="float:left;margin:0 20px 20px 0">
<iframe src="http://rcm.amazon.com/e/cm?t=netsmoo-20&amp;o=1&amp;p=8&amp;l=as1&amp;asins=0596527578&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=2586B3&amp;bc1=000000&amp;bg1=FFFFFF&amp;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</div>
<p>If you want to learn more about grouping in LINQ, take a look at chapter 9 of the excellent <a href="http://www.amazon.com/gp/product/0596527578?ie=UTF8&amp;tag=netsmoo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596527578">C# 3.0 in a Nutshell: A Desktop Quick Reference (In a Nutshell (O&#8217;Reilly))</a><img src="http://www.assoc-amazon.com/e/ir?t=netsmoo-20&amp;l=as2&amp;o=1&amp;a=0596527578" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />, by Ben and Joseph Albahari. The chapter has some great explanations and examples. In particular, they have an example of grouping with multiple keys, which I found very interesting.</p>

<!-- using Like-Button-Plugin-For-Wordpress [v4.2] | by http://www.gb-world.net -->
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.richardbushnell.net%2F2008%2F02%2F08%2Fhow-to-use-grouping-in-c-linq-syntax%2F&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="false" style="border:none; overflow:; width:450px; height:30px"></iframe>
<!-- using Like-Button-Plugin-For-Wordpress [v4.2] | by http://www.gb-world.net -->
]]></content:encoded>
			<wfw:commentRss>http://www.richardbushnell.net/2008/02/08/how-to-use-grouping-in-c-linq-syntax/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

