Si cela vous intéresse, vous devriez faire un benchmark et voir par vous-même quelle est la solution la plus rapide dans votre scénario.
Dans ce cas, la deuxième solution est généralement plus lente car ElementAt est une méthode d'extension Enumerable. Il a un chemin optimisé pour IList < T>, que HashSet < T> n'implémente pas. Donc, il prend le chemin "normal" qui énumère N éléments de votre IEnumerable < T>.
Vous pouvez comprendre par vous-même que votre deuxième solution a une complexité O (N^2), tandis que la première est sûrement O (N).
Existe-t-il une autre énumération rapide de HashSet? Non je ne pense pas. C'est ce que IEnumerable est pour. Mais n'est-ce pas assez rapide pour vous? Le micro-benchmarking est inutile et je m'inquiéterais si votre performance était liée à cela.
Dans la mesure du possible, évitez d'énumérer les ensembles de hachage et les dictionnaires. –
Pourquoi ne pas l'essayer vous-même? Faites quelques repères et tirer vos conclusions, ce n'est pas difficile à faire. –
Voici un lien qui explique comment répondre à ce genre de questions: http://blogs.msdn.com/b/vancem/archive/2006/02/20/535807.aspx –