Ich habe zwei Listen mit eigenen Daten gefüllt. lässt sich sagen, es gibt zwei Modelle Human
und AnotherHuman
. Jedes Modell enthält verschiedene Felder, jedoch haben sie einige gemeinsame Felder wie LastName, FirstName, Birthday, PersonalID
.Ausschließen von Elementen einer Liste in einem anderen mit anderen Objektdatentypen, LINQ?
List<Human> humans = _unitOfWork.GetHumans();
List<AnotherHuman> anotherHumans = _unitofWork.GetAnotherHumans();
Ich mag die Elemente aus der Liste auszuschließen anotherHumans
wo LastName, FirstName, Birthday
alle gleich die entsprechenden Felder eines Elements sind in der Liste humans
.
Allerdings, wenn ein Artikel in anotherHumans
Liste PersonalID
und Element in der Liste humans
haben die gleiche PersonalID
, dann ist es genug Human
mit AnotherHuman
dieses PersonalID
, sonst durch LastName, FirstName and Birthday
nur zu vergleichen.
Ich habe versucht, neue Liste von dublicates zu erstellen und von anotherHumans
auszuschließen:
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();
Aber wie kann ich PersonalID
aus beiden Listen vergleichen, wenn sie präsentiert (es ist nullable). Gibt es eine Möglichkeit, eine neue Instanz von AnotherHuman und eine Liste von Duplikaten zu entfernen und nur LINQ zu verwenden?
Vielen Dank im Voraus!
Für jedes Element in anotherHumans, dann würden Sie den Menschen Sammlung iterieren müssen, so Die Leistung würde sich erheblich verschlechtern, wenn die Größe der Sammlungen zunimmt. – spender
Dies wird nur Elemente vergleichen, die eine 'PersonalID' haben. Ich glaube nicht, dass dies gefragt wurde. – spender
Immer noch nicht so gut, denn in dem Fall, dass eine "PersonalID" vorhanden ist, ist es nicht erforderlich, den Nachnamen, den Namen und das Alter zu überprüfen, richtig? – spender