Suppression d'une liste d'objets à partir d'une autre liste

J'ai été à la recherche de quelque chose comme ça pendant des jours. Je suis en train de supprimer tous les éléments d'une plus grande liste d'Une fonction à une liste B.

Supposons que j'ai une liste générale avec 100 éléments avec différents IDENTIFIANTS et j'ai une autre liste avec des éléments spécifiques à seulement 10 dossiers. J'ai besoin de supprimer tous les éléments de la première liste qui n'existe pas à l'intérieur de la deuxième liste.

Je vais essayer de montrer le code que je ne sais pas comment cela n'a pas fonctionne.

List<Obj> listA = new List<Obj>(); 
List<Obj> listB = new List<Obj>(); 

//here I load my first list with many elements
//here I load my second list with some specific elements

listA.RemoveAll(x => !listB.Contains(x));

Je ne sais pas pourquoi, mais ça ne fonctionne pas. Si j'essaie de cet exemple avec un List<int> type, il fonctionne très bien, mais j'aimerais le faire avec mon objet. Cet objet a obtenu un ID mais je ne sais pas comment utiliser ce code à l'intérieur de l'LINQ phrase.

Le problème, c'est l'Contient depuis deux listes ne contient pas le même objet (peut-être une autre instance de la même classe, mais avec les mêmes données).
avez-vous remplacer Égale/GetHashcode sur votre Obj type à utiliser le champ ID au lieu de la méthode héritée de Système.L'objet?
Mon objets a reçu le même type, mais un contenu différent, n'avait qu'à comparer la carte d'identité et pas de l'ensemble de l'objet. Simplement suivi IAbstract~ réponse et a travaillé comme un charme... Merci, les gars !

OriginalL'auteur Dan-SP | 2011-10-03