Выберите элемент по индексу из .NET HashSet

В настоящий момент я использую пользовательский класс, производный от HashSet . Когда я выбираю элементы при определенных условиях, есть точка в коде:

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

Он работает нормально, и я получаю эти элементы. Но есть ли способ получить индекс этот элемент в коллекции для использования с методом ElementAt вместо целых объектов?

Это будет выглядеть примерно так:

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

Лучше ли вручную перебирать всю коллекцию? Мне нужно чтобы добавить, что он находится в большом цикле, поэтому это предложение Where выполняется несколько раз для разных строк someLabel .

Edit

Зачем мне это нужно? кластеры - это набор кластеров некоторой коллекции документов. Документы сгруппированы в кластеры по схожести тем. Таким образом, одним из последних шагов алгоритма является обнаружение la бел для каждого кластера. Но алгоритм не идеален, и иногда он создает два или более кластера с одинаковой меткой. Я хочу просто объединить эти кластеры в один большой.

14
задан Sumon Banerjee 20 February 2014 в 08:01
поделиться