title: LINQ: Given A List of Objects, Create a Dictionary with child objects as keys and Parent Objects as Value
body: <p>I have these two classes</p>
  
  <pre><code>public class Person
  {
  }
  public class Company
  {
   public List&lt;Person&gt; Persons
  {get;set;}
  }
  </code></pre>
  
  <p>Challenge: Given a list of Company (i.e., <code>List&lt;Company&gt; Companies</code>). Create a <code>dictionary</code> with the key <code>Person</code>, and a list of <code>Company</code> he belongs to as the values. Note that one <code>Person</code> <em>can</em> belong to multiple <code>Companies</code>.</p>
  
  <p>I am only interested in LINQ solution; a brute force search and collect is not what I want. </p>