В настоящий момент я использую пользовательский класс, производный от 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 бел для каждого кластера. Но алгоритм не идеален, и иногда он создает два или более кластера с одинаковой меткой. Я хочу просто объединить эти кластеры в один большой.