Vous pouvez utiliser List<T>.Contains
- soyez conscient qu'il s'agira d'une recherche linéaire, c'est-à-dire O (N) au lieu de O (1) d'un HashMap
. Si votre liste n'est pas trop grande, il est peu probable que cela pose un gros problème. Bien sûr, vous avez toujours besoin des éléments pour remplacer correctement Equals
, sauf si vous êtes satisfait de l'identité de référence.
Si vous avez une grande liste sur laquelle vous devrez effectuer des tests de confinement répétés, vous pouvez simplement créer un HashSet<T>
à partir de la liste existante. Si vous devez manipuler la liste au fur et à mesure, vous pouvez encapsuler la liste et l'ensemble dans votre propre collection. Vous aurez besoin de déterminer la sémantique que vous voulez - que voudriez-vous arriver si vous avez ajouté le même ID deux fois? Le deuxième appel devrait-il être ignoré? Si vous pouvez vous en sortir sans le faire, tant mieux :)
woohoo pour Linq! – Gabe
En fait, cela n'utilise pas LINQ, mais utilise simplement l'opérateur lambda pour créer une méthode déléguée en ligne. L'exemple de JaredPar utilisant la méthode .Any est LINQ. –