Entfernen einer Liste von Objekten aus einer anderen Liste

7

Ich habe seit Tagen so etwas gesucht. Ich versuche, alle Elemente aus einer größeren Liste A gemäß einer Liste B zu entfernen.

Angenommen, ich habe eine allgemeine Liste mit 100 Elementen mit unterschiedlichen IDS und ich bekomme eine andere Liste mit spezifischen Elementen mit nur 10 Datensätzen. Ich muss alle Elemente aus der ersten Liste entfernen, die nicht in der zweiten Liste vorhanden sind.

Ich werde versuchen, den Code zu zeigen, von dem ich eigentlich nicht weiß, wie er funktioniert.

%Vor%

Ich weiß nicht warum, aber es funktioniert nicht. Wenn ich dieses Beispiel mit einem List<int> -Typ versuche, funktioniert es gut, aber ich würde das gerne mit meinem Objekt machen. Dieses Objekt hat eine ID erhalten, aber ich weiß nicht, wie ich diese ID im LINQ-Satz verwenden soll.

    
Dan-SP 03.10.2011, 16:28
quelle

4 Antworten

21

Sie müssen die IDs vergleichen:

%Vor%

Liste (T) .RemoveAll

    
Joe 03.10.2011, 16:30
quelle
2

Ich glaube, dass Sie dazu die Exclusive Erweiterung verwenden können.

%Vor%

Referenz: Ссылка

    
aevanko 04.10.2011 07:07
quelle
0

Laut der Dokumentation auf MSDN ( Ссылка ) enthält contains den standardmäßigen Equality-Vergleich Bestimmen Sie die Gleichheit, damit Sie die Equals-Methode von Equatable für Ihre Obj-Klasse verwenden können, damit sie funktioniert. HiperiX erwähnt den Ref-Vergleich oben.

So fügen Sie die IEquateable-Schnittstelle hinzu: Ссылка

    
deepee1 03.10.2011 16:35
quelle
0

Wenn Sie eine Liste von Objekten ( listB ) aus einer anderen Liste ( listA ) entfernen wollen, verwenden Sie:

%Vor%

Denken Sie daran, ToList () zu verwenden, um IEnumerable<Obj> in List<Obj> zu konvertieren.

    
romanoza 31.10.2016 09:41
quelle

Tags und Links