title: Fastest way to sort a List by two fields, one alphabetical and the other custom?
body: <p>Let's say I have a <code>List&lt;Pet&gt;</code> and each Pet has a <code>Pet.Name</code> and <code>Pet.Type</code> field.</p>
  
  <p>For example:</p>
  
  <blockquote>
    <p>Name: Bob Type: Fish</p>
    
    <p>Name: Rex Type: Dog</p>
    
    <p>Name: Alf Type: Dog</p>
    
    <p>Name: Fluffy Type: Cat</p>
    
    <p>Name: Apollo Type: Fish</p>
    
    <p>Name: Mango Type: Horse</p>
  </blockquote>
  
  <p>Now I want to sort first by Name alphabetically, and second by Type (non-alpha).</p>
  
  <p>The second sort (Type) is not to be alphabetical, but just specific/custom.</p>
  
  <p>For example, let's say the order should always be: Fish, Horses, Dogs, Cats.</p>
  
  <p>So a properly ordered list from the above data would look like this:</p>
  
  <blockquote>
    <p>Apollo, Fish</p>
    
    <p>Alf, Dog</p>
    
    <p>Bob, Fish</p>
    
    <p>Fluffy, Cat</p>
    
    <p>Mango, Horse</p>
    
    <p>Rex, Dog</p>
  </blockquote>
  
  <p>Or to be more clear:</p>
  
  <blockquote>
    <p>A, Fish</p>
    
    <p>A, Horse</p>
    
    <p>A, Dog</p>
    
    <p>A, Cat</p>
    
    <p>B, Fish</p>
    
    <p>B, Horse</p>
    
    <p>B, Dog</p>
    
    <p>B, Cat</p>
    
    <p>C, Fish</p>
    
    <p>C, Horse</p>
    
    <p>C, Dog</p>
    
    <p>C, Cat</p>
  </blockquote>
  
  <p>Which means sometimes Cat could appear before Dog, but only if there are Cats with an 'A' name but no Dogs with an 'A' name... get it?</p>
  
  <p>So it's sorted alphabetically, but then within each letter group it is sorted in a custom fashion based on the second field.</p>
  
  <p>So what would be the fastest way to sort this List in this fashion?</p>