title: How to join two Lists based on common property
body: <p>Suppose I have two <code>Lists&lt;myObject&gt;</code> where <code>myObject</code> consists of the two properties</p>
  
  <p><strong>Id</strong> (of type <code>Int</code>) and </p>
  
  <p><strong>Value</strong> (of type <code>Double</code>)</p>
  
  <p>I need to get a list out of these two lists that is made of (anonymous) objects like this:</p>
  
  <pre><code>Id, [Double value from List 1], [Double value from List 2]
  </code></pre>
  
  <p>So if for a given Id both lists contain a value, it should look like this example:</p>
  
  <pre><code>12, 21.75, 19.87
  </code></pre>
  
  <p>If one list does not contain an object with an Id that is present in the other list, the value should be <em>null</em>:</p>
  
  <pre><code>15, null, 22.52
  </code></pre>
  
  <p>How can I achieve that?
  <strong><em>Update:</em></strong> I know how I could get such a list, of course, but I'm looking for the most performant way to do it, preferrably by using some witty Linq magic.</p>