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?
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é.
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));
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;
}
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.