Al momento sto utilizzando una classe personalizzata derivata da HashSet
. C'è un punto del codice quando seleziono articoli sotto certe condizioni:Selezionare un elemento per indice da un HashSet .NET
var c = clusters.Where(x => x.Label != null && x.Label.Equals(someLabel));
Funziona bene e ottengo questi elementi. Ma c'è un modo per ricevere un indice di quell'elemento all'interno della collezione da usare con il metodo ElementAt
, invece di interi oggetti?
Sembrerebbe più o meno così:
var c = select element index in collection under certain condition;
int index = c.ElementAt(0); //get first index
clusters.ElementAt(index).RunObjectMthod();
Is iterare manualmente su tutta la collezione un modo migliore? Devo aggiungere che è in un ciclo più grande, quindi questa clausola Where
viene eseguita più volte per diverse stringhe someLabel
.
Modifica
Che cosa ho bisogno per questo? clusters
è un insieme di cluster di alcuni documenti raccolti. I documenti sono raggruppati in cluster per argomenti di similarità. Quindi uno degli ultimi passaggi dell'algoritmo è scoprire l'etichetta per ciascun cluster. Ma l'algoritmo non è perfetto e talvolta crea due o più cluster con la stessa etichetta. Quello che voglio fare è semplicemente unire questi cluster in uno grande.
Ho aggiunto una descrizione più dettagliata di un problema come richiesto :) – Ventus
@Ventus: Ciò non spiega in realtà perché è necessario l'indice. Se vuoi solo eseguire un metodo per ogni elemento corrispondente, un semplice ciclo foreach è sicuramente la strada da seguire ... hai una ragione particolare per desiderare un indice? –
Ovviamente le mie abilità linguistiche (intendo inglese) non sono perfette, anche se volevo modificare contemporaneamente 2 elementi nella collezione. Tuttavia, il tuo suggerimento di usare 'List' invece di set era una buona idea, quindi il problema è risolto e la tua risposta è accettata. – Ventus