Je ne vois pas comment la première version pourrait compiler, et la deuxième version ne fera rien à moins que vous n'utilisiez le résultat. Elle ne supprime rien de la collection existante - en fait, il se peut même qu'il n'y ait pas d'éléments de la collection. être une collection en mémoire la soutenant. Elle renvoie simplement une séquence qui, lorsqu'elle est itérée, renvoie les valeurs appropriées.
Si vous sont en utilisant le résultat, par exemple
IEnumerable<MyClass> others = allObjects.Except(objectsToExcept);
foreach (MyClass x in others)
{
...
}
alors tout devrait bien se passer si vous avez remplacé GetHashCode
y Equals
o si vous êtes heureux d'utiliser l'égalité de référence. Essayez-vous de supprimer les valeurs logiquement égales, ou faites-vous la même chose que les autres ? références se produisent dans les deux séquences ? Avez-vous remplacé GetHashCode
y Equals
et si oui, êtes-vous sûr que ces implémentations fonctionnent ?
En principe, tout devrait bien se passer - je vous suggère d'essayer de créer un programme court mais complet qui démontre le problème ; je pense qu'en le faisant, vous découvrirez ce qui ne va pas.