Selecione um elemento pelo índice em um .NET HashSet

No momento, estou usando uma classe personalizada derivada deHashSet. Há um ponto no código quando seleciono itens sob determinada condição:

var c = clusters.Where(x => x.Label != null && x.Label.Equals(someLabel));

Funciona bem e eu recebo esses elementos. Mas existe uma maneira de eu receber um índice desse elemento dentro da coleção para usar comElementAt método, em vez de objetos inteiros?

Seria mais ou menos assim:

var c = select element index in collection under certain condition;
int index = c.ElementAt(0); //get first index
clusters.ElementAt(index).RunObjectMthod();

A iteração manual de toda a coleção é a melhor maneira? Eu preciso acrescentar que está em um loop maior, então issoWhere A cláusula é executada várias vezes para diferentessomeLabel cordas.

Editar

Para que eu preciso disso?clusters é um conjunto de clusters de algumas coleções de documentos. Os documentos são agrupados em clusters por similaridade de tópicos. Portanto, uma das últimas etapas do algoritmo é descobrir o rótulo para cada cluster. Mas o algoritmo não é perfeito e, às vezes, cria dois ou mais clusters com o mesmo rótulo. O que eu quero fazer é simplesmente mesclar esses agrupamentos em um grande.

questionAnswers(3)

yourAnswerToTheQuestion