title: Why is my IEnumerable<String> using yield return slower to iterate then List<String>
body: <p>I have been testing out the <code>yield return</code> statement with some of the code I have been writing.  I have two methods:</p>
  
  <pre><code>public static IEnumerable&lt;String&gt; MyYieldCollection {
          get 
          {
              wrapper.RunCommand("Fetch First From Water_Mains");
              for (int row = 0; row &lt; tabinfo.GetNumberOfRows() ; row++) //GetNumberOfRows
                                                                        //will return 1000+ most of the time.
              {
                  yield return wrapper.Evaluate("Water_Mains.col1");
                  wrapper.RunCommand("Fetch Next From Water_Mains");
               }
          }
      }
  </code></pre>
  
  <p>and </p>
  
  <pre><code>public static List&lt;String&gt; MyListCollection
      {
          get
          {
              List&lt;String&gt; innerlist = new List&lt;String&gt;();
  
              wrapper.RunCommand("Fetch First From Water_Mains");
              for (int row = 0; row &lt; tabinfo.GetNumberOfRows(); row++)
              {
                  innerlist.Add(wrapper.Evaluate("Water_Mains.col1"));
                  wrapper.RunCommand("Fetch Next From Water_Mains");
              }
              return innerlist;
          }
      }
  </code></pre>
  
  <p>then I use a <code>foreach</code> loop over each collection:</p>
  
  <pre><code>        foreach (var item in MyYieldCollection) //Same thing for MyListCollection.
          {
              Console.WriteLine(item);
          }
  </code></pre>
  
  <p>The funny thing is for some reason I seem to be able to loop over and print out the full <code>MyListCollection</code> faster then the MyYieldCollection. </p>
  
  <p>Results:</p>
  
  <ul>
  <li>MyYieldCollection -> 2062</li>
  <li>MyListCollection -> 1847</li>
  </ul>
  
  <p>I can't really see a reason for this, am I missing something or is this normal?</p>