Ich versuche, zwei Listen mit der Ausnahme Verfahren zu vergleichen, aber es nicht richtig funktioniert:Vergleichen Sie zwei Listen mit Ausnahme Methode
List<Customer> PotentialSharedCustomer = new List<Customer>();
PotentialSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "", Name = "Hans Jürgen" });
PotentialSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "05465", Name = "Beate Müller" });
PotentialSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "15645", Name = "Sabine Meyer" });
PotentialSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "54654", Name = "Moritz Kummerfeld" });
PotentialSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "15647", Name = "Hanna Testname" });
List<Customer> ActualSharedCustomer = new List<Customer>();
ActualSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "", Name = "Hans Jürgen" });
ActualSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "05465", Name = "Beate Müller" });
ActualSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "15645", Name = "Sabine Meyer" });
PrepareCreateSharedCustomer(PotentialSharedCustomer, ActualSharedCustomer);
public void PrepareCreateSharedCustomer(List<Customer> potentialSharedCustomer, List<Customer> actualSharedCustomer)
{
List<Customer> result = potentialSharedCustomer.Except(actualSharedCustomer).ToList<Customer>();
}
Das Ergebnis der Variablen „result“ sollte alle Aufzeichnungen "sein PotentialSharedCustomers“gibt es nicht in der Liste "ActialSharedCustomer":
PotentialSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "54654", Name = "Moritz Kummerfeld" });
PotentialSharedCustomer.Add(new Customer { AccountId = Guid.Empty, AccountNumber = "15647", Name = "Hanna Testname" });
I thougt "Außer" ist der richtige Weg, dies zu lösen, aber ich die Rückkehr aller Elemente von get "PotentialSharedCustomer"
Thx für die Hilfe
Haben Sie "Equals" und "GetHashCode" in "Customer" überschrieben? – 2kay
mögliches Duplikat von [LINQ Außer Operator- und Objektgleichheit] (http://stackoverflow.com/questions/693324/linq-except-operator-and-object-equality) –
Wie vergleicht man die Gleichheit zwischen zwei Instanzen des Kunden? Wenn Sie nichts Spezielles tun, erhalten Sie die Ergebnisse eines Referenzgleichheitsvergleichs. Ich nehme an, dass Sie einen IEqualityComparer bereitstellen müssen, der Gleichheit basierend auf der Kontonummer ermittelt. –
Matt