J'ai deux IEnumerable<string>
qui représentent des listes de chaînes. Je veux voir si un élément du premier ensemble correspond à un élément du second ensemble. En ce moment j'ai quelque chose qui ressemble à ceci:Identifier efficacement si un élément du premier ensemble correspond à un élément du deuxième ensemble
firstSet.Intersect(secondSet).Count() > 0
Cependant, il me semble être plutôt inefficace, car elle produira une liste des éléments qui correspondent, puis les compter. Je peux ensuite tester pour voir si le compte est supérieur à zéro. Je ne me soucie pas de savoir quel match, combien de match, juste que n'importe quel élément dans les deux ensembles correspondent. Y a-t-il quelque chose comme firstSet.AnyMatch(secondSet)
qui me manque?
Existe-t-il un moyen plus efficace d'exprimer cela?
Serait-il correct de supposer que si le type sous-jacent était déjà un HashSet qu'il ne le reconstruirait pas? –
@Colin: Je ne sais pas si c'est optimisé pour ça. Si vous * savez * que l'un d'entre eux est un 'HashSet' alors vous devriez lancer un cast et appeler 'HashSet .Overlaps'. –
C'est fantastique. Merci. –