De vérifier tout élément qui existe dans les deux collections

Je me demandais si Linq a une méthode pour vérifier si les deux collections ont au moins un élément en commun. Je m'attends à quelque chose comme ceci:

var listA = new List<int>() { some numbers };
var listB = new List<int>() { some numbers, potentially also in list A };

bool hasSameElements = listA.hasMatchingElements(listB);

N'existe dans Linq ou devrais-je écrire une méthode personnalisée pour elle?

Je suis conscient de la méthode Intersect, mais n'est-ce pas le rendement de l'ensemble de l'intersection de l'ensemble? Je suis seulement intéressé à vérifier SI les deux de la collection se croisent, donnant l'ensemble semble comme un gaspillage, en particulier sur les plus grandes collections.

  • Intersect seulement donne autant d'éléments qu'il est demandé. Si vous le suivez avec Any, ou FirstOrDefault, ou faire un foreach et de briser à la première itération, elle ne pourra trouver le premier élément qui existe dans les deux listes (le cas échéant) - il ne vous embêtez pas à trouver le repos.
  • Howver, notez que le Intersect opération requiert l'un de la deux séquences à lire complètement avant de le premier élément peut être cédé. Si l'un de vos entrées est à l'infini, assurez-vous que ce n'est pas l'entrée qui est complètement consommé. Notez que le spec pour Intersect des mensonges au sujet de la façon dont il fonctionne.
InformationsquelleAutor zeebonk | 2012-09-25