Exclude items of one list in another with different object data types, LINQ? <p>I have two lists filled with their own data. lets say there are two models <code>Human</code> and <code>AnotherHuman</code>. Each model contains different fields, however they have some common fields like <code>LastName, FirstName, Birthday, PersonalID</code>.</p> <pre><code>List&lt;Human&gt; humans = _unitOfWork.GetHumans(); List&lt;AnotherHuman&gt; anotherHumans = _unitofWork.GetAnotherHumans(); </code></pre> <p>I would like to exclude the items from list <code>anotherHumans</code> where <code>LastName, FirstName, Birthday</code> are all equal to the corresponding fields of any item in list <code>humans</code>.</p> <p>However if any item in <code>anotherHumans</code> list has <code>PersonalID</code> and item in list <code>humans</code> have the same <code>PersonalID</code>, then it is enough to compare <code>Human</code> with <code>AnotherHuman</code> only by this <code>PersonalID</code>, otherwise by <code>LastName, FirstName and Birthday</code>.</p> <p>I tried to create new list of dublicates and exclude it from <code>anotherHumans</code>:</p> <pre><code>List&lt;AnotherHuman&gt; duplicates = new List&lt;AnotherHuman&gt;(); foreach(Human human in humans) { AnotherHuman newAnotherHuman = new AnotherHuman(); newAnotherHuman.LastName = human.LastName; newAnotherHuman.Name= human.Name; newAnotherHuman.Birthday= human.Birthday; duplicates.Add(human) } anotherHumans = anotherHumans.Except(duplicates).ToList(); </code></pre> <p>But how can I compare <code>PersonalID</code> from both lists if it presents (it is nullable). Is there any way to get rid from creating new instance of AnotherHuman and list of duplicates and use LINQ only?</p> <p>Thanks in advance!</p>