title: why object in collection of System.Linq.Enumerable.WhereSelectListIterator cannot be changed
body: <p>I use Linq to select some data and the returned type is WhereSelectListIterator. I find that object in WhereSelectListIterator cannot be modified, e.g., set to null or update any property of that value. Is it by design? How to make that possible?</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  
  namespace linqtest
  {
      class Program
      {
          static void Main(string[] args)
          {
  
              var project = new Project()
              {
                  Sections = new List&lt;Section&gt;()
                  {
                      new Section()
                      {
                          OutDated = new char[2]{'a','d'}
  
                      },
                      new Section()
                      {
                          OutDated = new char[2]{'a','d'}
  
                      },
                      new Section()
                      {
                          OutDated = new char[2]{'a','d'}
  
                      }
                  }
              };
  
  
              var dates = project.Sections.Select(t=&gt;(new MyString(t.OutDated)));
              Console.Write(dates.ElementAt(0).Description);
              dates.ElementAt(0).Description = "123";
              Console.Write(dates.ElementAt(0).Description);
              Console.Read();
  
          }
      }
  
  
      class MyString
      {
          public MyString(char[] abc)
          {
                  Description = new string(abc).Substring(1);
          }
          public string Description { set; get; }
      }
      class Project
      {
          public IEnumerable&lt;Section&gt; Sections;
      }
      internal class Section
      {
          public char[] OutDated;
  
      }
  }
  </code></pre>