На данный момент я использую собственный класс, полученный из HashSet
. Там есть точка в коде, когда я выбираю пункты при определенных условиях:Выберите элемент по индексу из .NET 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
.
Редактировать
Что мне нужно? clusters
представляет собой набор кластеров некоторых документов. Документы сгруппированы в кластеры по сходству тем. Таким образом, одним из последних шагов алгоритма является обнаружение метки для каждого кластера. Но алгоритм не совершенен, и иногда он создает два или более кластера с одной и той же меткой. Я хочу просто объединить эти кластеры в большие.
Я добавил более подробное описание проблемы, как вы просили :) – Ventus
@ Ventus: На самом деле это не объясняет, зачем нужен индекс. Если вы просто хотите запустить метод для каждого подходящего элемента, простой цикл foreach определенно является способом продвижения вперед ... у вас есть особая причина для желания индекса? –
Очевидно, что мои языковые навыки (я имею в виду английский) не идеальны, хотя я хотел одновременно изменить два элемента в коллекции. Тем не менее, ваше предложение использовать «Список» вместо набора было хорошей идеей, поэтому проблема решена и ваш ответ принят. – Ventus