title: Combine/Merge 3 lists of objects based on condition
body: <pre><code>public class Derp
  {
      public Derp
      {
          listOfStrings = new List&lt;string&gt;();
      }
      public string strName;
      public List&lt;string&gt; listOfStrings;
      public int unrequiredInt;
      public bool unrequiredBool;
  }
  
  List&lt;Derp&gt; derp1 = ... //generate data assume strName is unique in list, but not across lists;
  List&lt;Derp&gt; derp2 = ... //generate data;
  List&lt;Derp&gt; derp3 = ... //generate data;
  
  List&lt;Derp&gt; mergedDerp = new List&lt;Derp&gt;();
  </code></pre>
  
  <p>I need to merge derp1 and derp2 and derp3 with the condition derp1[x].strName == derp2[y].strName == derp3[z].strName. The merged list should have all Derps but merge derp1,2,3 into one derp based on the condition above (unrequiredInt and unrequiredBool's content doesn't matter). I know it can be done in LINQ but I'm quite at a loss. Something like ...</p>
  
  <pre><code>mergedDerp = derp1.Join(derp2, d1 =&gt; derp1, d2 =&gt; derp2, (d1,d2) =&gt; new { ... ;
  //and the next derp would be (i assume)
  mergedDerp = mergedDerp.Join(derp3, md =&gt; mergedDerp, ...;
  </code></pre>
  
  <p>But i'm not getting it. </p>
  
  <p><strong>The result should contain a list of unique Derps by their strName, and if any Derps were merged, the listOfStrings should all be appended into the new Derp.</strong></p>