title: Change an object in a list of objects by using foreach over a smaller list of the same objects
body: <p>Im trying to use a foreach loop to change the values in objects in that list. However I need one list that doesnt change to enumerate over, and the main list to be changed as I do so. No matter what I try I run into an error because it is changing the object in the list I am enumerating over.</p>
  <pre><code>public static void GetHtml(Site website)
      {
          IEnumerable&lt;Page&gt; pages = new List&lt;Page&gt;();
          pages = website.PageList.Where(c =&gt; !c.Checked);
          WebClient client = new WebClient();
          foreach (Page page in pages)
          {
              try
              {
                  page.Html = client.DownloadString(page.PageUrl);
                  ParseHtml(page);
                  ParseLinks(page, website);
                  page.Valid = true;
                  page.Checked = true;
              }
              catch
              {
                  page.Valid = false;
                  page.Checked = true;
              }
          }
      }
  </code></pre>
  <p>The site object contains a List where I want to modify the values of the Page objects, but I dont need to modify the list of Page I am enumerating over. I thought instantiating a new list would do the job, but obviously not.</p>