title: how to pair items from two lists
body: <p>I have two lists of <code>ClassA</code></p>
  
  <pre><code>List&lt;ClassA&gt; list1;
  
  List&lt;ClassA&gt; list2;
  </code></pre>
  
  <p>I want to create 4 lists:</p>
  
  <pre><code>List&lt;ClassA&gt; matchedList1;
  
  List&lt;ClassA&gt; matchedList2;
  
  List&lt;ClassA&gt; unmatchedList1;
  
  List&lt;ClassA&gt; unmatchedList2;
  </code></pre>
  
  <p>where <code>matchedList1</code> and <code>matchedList2</code> contain in order items with same <code>classA.name</code> (unique)</p>
  
  <p><code>unmatchedList1</code> and <code>unmatchedList2</code> contain in order items that were not paired.</p>
  
  <p>e.g.</p>
  
  <pre><code>list1 = name1, name2, name3
  list2 = name4, name1, name3
  
  matchedList1 = name1, name3 
  matchedList2 = name1, name3 
  
  unmatchedList1 = name2
  unmatchedList2 = name4
  </code></pre>
  
  <p>is there any lambda expression to pair items from two lists according to some predicate?</p>