title: Collection custom reordering
body: <p>I have collection of items and every of them has <code>int TypeId</code> property. I need to reorder items in this collection (or get new), where items are ordered so first all items with <code>TypeId = 3</code>, then with <code>TypeId = 1</code> and then <code>TypeId = 2</code>.<br>
  My solution is:</p>
  
  <pre><code>var result = new List&lt;A&gt;();
  result.AddRange(source.Where(i =&gt; i.TypeId == 3));
  result.AddRange(source.Where(i =&gt; i.TypeId == 1));
  result.AddRange(source.Where(i =&gt; i.TypeId == 2));
  </code></pre>
  
  <p>I wonder, is there any another quick solution without multiple iterating over the <code>source</code> collection (may be some LINQ trick)? </p>