title: linq predicate remove objects from collection issue
body: <p>I am trying to figure out why my delegate function does not work, any help would be appreciated, this is probably a small issue but I have been working on it for a while and connot figure it out, my code:</p>
  
  <pre><code>//remove all matching people from this list
  public void RemovePeopleFromLookup(Predicate&lt;PeopleDTO&gt; _people)
  {
     //Lookup is an internal readonly ICollection of PeopleDTO
     Lookup.RemoveAll(_people);
  }
  </code></pre>
  
  <p>//call the method as below:
  //data is a collection of PeopleDTO</p>
  
  <pre><code>mylookupobj.RemovePeopleFromLookup(x =&gt; data.Any(y =&gt; y.Name == x.Name &amp;&amp; x.Type == FieldElement.Strange));
  </code></pre>
  
  <p>For some reason all people get removed from this lookup, this is not correct, I only want to remove the people who are </p>
  
  <ol>
  <li>Strange</li>
  <li>who <strong>DONOT</strong> exist in the <strong>data</strong> collection</li>
  </ol>
  
  <p>EDIT:</p>
  
  <p>The <strong>data collection</strong> can be an object of <strong>different types</strong> -> strange, noisy etc...
  The <strong>mylookupobj.Lookup</strong> data collection is similar to the data collection and contain contain <strong>multiple types</strong> hence why I wrote my query that way</p>
  
  <p>EDIT2: I missed out this information which may be very important...</p>
  
  <pre><code>public class PersonDTO
  {
  //Name
  //Type
  //Age
  //Desc
  }
  </code></pre>
  
  <p>Inside the mylookupobj.Lookup - all the properties contain data, however inside the data collection only the Name + Type is present.</p>