title: Why does this generic cast fail?
body: <p>I have the following inheritance:</p>
  
  <pre><code>internal abstract class TeraRow{}
  
  internal class xRow : TeraRow {} // xRow is a child of TeraRow
  
  public IEnumerable&lt;TeraRow&gt; Compare(MappedTables which, DateTime selectionStart
          , DateTime selectionEnd, string pwd)
  {
      IEnumerable&lt;xRow&gt; result=CompareX();
      return  (IEnumerable&lt;TeraRow&gt;)result; //Invalid Cast Exception? 
  
  }
  </code></pre>
  
  <p>Unable to cast object of type 'System.Collections.Generic.List<code>1[xRow]' to type 'System.Collections.Generic.IEnumerable</code>1[TeraRow]</p>
  
  <p>Also why do I need to cast it at all?</p>