title: Why does cast from IEnumerable<string> to List<string> fail?
body: <p>Why does the following not succeed in casting<code>IEnumerable&lt;string&gt;</code> to <code>List&lt;string&gt;</code>?</p>
  
  <pre><code>var l = new List&lt;Tuple&lt;string, int&gt;&gt;();
  l.Add(new Tuple&lt;string, int&gt;("a string", 1));
  List&lt;string&gt; s = (List&lt;string&gt;)l.Select(x =&gt; x.Item1); // System.InvalidCastException
  MessageBox.Show(s[0]);
  </code></pre>
  
  <p>Also, why is the exception not caught properly in Visual Studio? It appears in the debug window but doesn't stop execution of the program.</p>