title: Efficient DataTable Group By
body: <p>I would like to perform an aggregate query on a DataTable to create another DataTable. I cannot alter the SQL being used to create the initial DataTable.</p>
  
  <p>Original DataTable: (everything is an int)</p>
  
  <pre><code>TeamID | MemberID
  -------|-----------
  1      | 1
  1      | 2
  1      | 3
  2      | 4
  2      | 5
  </code></pre>
  
  <p>Desired result:</p>
  
  <pre><code>TeamID | MemberIDCount
  -------|--------------
  1      | 3
  2      | 2
  </code></pre>
  
  <p>If it were SQL I could just do </p>
  
  <pre><code>Select TeamID, Count(*) From Table Group By TeamID
  </code></pre>
  
  <p>but in my application, the only way I know how to handle this would be something like this:</p>
  
  <pre><code>Dictionary&lt;int,int&gt; d = new Dictionary&lt;int,int&gt;();
  foreach (DataRow dr in dt.Rows)
  {
      if (d.ContainsKey(dr.ID))
      {
          d[dr.ID] = d[dr.ID] + 1;
      }
      else
      {
          d.Add(dr.ID, 1);
      }
  }
  </code></pre>
  
  <p>Is there a better way?</p>