title: LINQ Join 2 List<T>s
body: <p>Preface: I don't understand what this does:</p>
  
  <pre><code>o =&gt; o.ID, i =&gt; i.ID, (o, id) =&gt; o
  </code></pre>
  
  <p>So go easy on me.   :-)</p>
  
  <hr>
  
  <p>I have 2 lists that I need to join together:</p>
  
  <pre><code>// list1 contains ALL contacts for a customer.
  // Each item has a unique ID.
  // There are no duplicates.
  ContactCollection list1 = myCustomer.GetContacts();
  
  // list2 contains the customer contacts (in list1) relevant to a REPORT
  // the items in this list may have properties that differ from those in list1.
  /*****/// e.g.:
  /*****/        bool SelectedForNotification; 
  /*****///  may be different.
  ContactCollection list2 = myReport.GetContacts();
  </code></pre>
  
  <p>I need to create a third ContactCollection that contains all of the contacts in <code>list1</code> but with the properties of the items in <code>list2</code>, if the item is in the list[2] (<code>list3.Count == list1.Count</code>).</p>
  
  <hr>
  
  <p><strong>I need to replace all items in <code>list1</code> with the items in <code>list2</code> where items in <code>list1</code> have the IDs of the items in <code>list2</code>. The resulting list (<code>list3</code>) should contain the same number of items at <code>list1</code>.</strong></p>
  
  <p>I feel as though I'm not making any sense. So, please ask questions in the comments and I'll try to clarify.</p>