web-dev-qa-db-fra.com

Comment vérifier si un tableau contient un élément d'un autre tableau

Avec 2 tableaux int, par exemple, foo et bar, quel est le moyen le plus efficace de vérifier que la barre de tableau contient au moins un élément que foo contient. devrait retourner vrai/faux.

Je soupçonne que foreach est imbriqué, mais je me demande simplement s'il existe un moyen plus agréable?

46
raklos

Utiliser LINQ:

array1.Intersect(array2).Any()

Remarque: L'utilisation de Any() garantit que l'algorithme d'intersection s'arrête lorsque le premier objet égal est trouvé.

100
Olli

C # 3: 

bool result = bar.Any(el => foo.Contains(el));

Exécution parallèle C # 4: 

bool result = bar.AsParallel().Any(el => foo.AsParallel().Contains(el));
7
Alex Bagnolini

Oui boucles imbriquées, bien qu'une soit cachée:

bool AnyAny(int[] A, int[]B)
{
    foreach(int i in A)
       if (B.Any(b=> b == i))
           return true;
    return false;
}
1
James Curran

Une autre solution:

var result = array1.Any(l2 => array2.Contains(l2)) == true ? "its there": "not there";

Si vous avez une classe au lieu de types de données intégrés tels que int etc., vous devez remplacer l'implémentation Override Equals et GetHashCode pour votre classe.

0
Gauravsa