16

独自のデータで満たされた 2 つのリストがあります。と の 2 つのモデルがあるHumanとしAnotherHumanます。各モデルには異なるフィールドが含まれていますが、 のようないくつかの共通フィールドがありLastName, FirstName, Birthday, PersonalIDます。

List<Human> humans = _unitOfWork.GetHumans();
List<AnotherHuman> anotherHumans = _unitofWork.GetAnotherHumans();

anotherHumanslist 内の任意の項目の対応するフィールドとLastName, FirstName, Birthdayすべて等しい項目を list から除外したいと思いますhumans

ただし、 list 内のいずれかの項目とanotherHumanslist内のPersonalID項目humansが同じである場合は、 this のみで、そうでない場合はPersonalIDで比較すれば十分です。HumanAnotherHumanPersonalIDLastName, FirstName and Birthday

重複の新しいリストを作成してから除外しようとしましたanotherHumans:

List<AnotherHuman> duplicates = new List<AnotherHuman>();
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();

しかし、両方のリストが存在する場合、どのように比較できPersonalIDますか (null 可能です)。AnotherHuman の新しいインスタンスと重複のリストを作成して LINQ のみを使用する方法はありますか?

前もって感謝します!

4

3 に答える 3