title: Compare two List<string> and print the duplicates
body: <p>I'm having trouble preserving the duplicates when comparing two <code>List&lt;T&gt;</code> objects. The goal is to have the duplicates added to a third list, call it <code>list3</code>. </p>
  
  <p><code>list1</code>  has about 5 items, while <code>list2</code> has 10 items. </p>
  
  <p><code>list3</code> should contain the following: <code>00T51234, 00T54567, 00T57894</code></p>
  
  <pre><code>List&lt;string&gt; list1 = new List&lt;string&gt;(){"00T51234", "00T54567", "00T57894",
                       "00T55263", "00T58965"};
  
  List&lt;string&gt; list2 = new List&lt;string&gt;(){"00T59633", "00T52222", "00T57894", 
                       "00T52322", "00T51234", "00T54567", "00T57894", "00T57897",
                       "00T55556", "00T59563"};
  
  List&lt;string&gt; list3 = new List&lt;string&gt;();
  </code></pre>
  
  <p>I attempted to use <a href="https://stackoverflow.com/questions/15801655/difference-between-two-lists-preserving-duplicates">Ani's resolution</a>, seen below: </p>
  
  <pre><code>var lookup2 = list2.ToLookup(str =&gt; str);
  
  var result = from str in list1
           group str by str into strGroup
           let missingCount 
                = Math.Max(0, strGroup.Count() - lookup2[strGroup.Key].Count())
           from missingStr in strGroup.Take(missingCount)
           select missingStr;
  </code></pre>
  
  <p>However this solution is not giving me the result that I'm looking for. Any help would be greatly appreciated. Thanks!</p>