目前我使用的派生自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();
手動遍歷整個集合更好的辦法?我需要補充的是它在一個更大的循環中,因此對於不同的someLabel
字符串,此Where
子句將執行多次。
編輯
我需要這個? clusters
是一些文檔集合的集合。文檔通過主題相似性分組爲聚類。因此算法的最後一步是發現每個羣集的標籤。但算法並不完美,有時它會使兩個或更多個具有相同標籤的羣集。我想要做的只是將這些集羣合併爲一個大集合。
我已經添加了問題的更詳細的描述,因爲你問:) – Ventus 2010-09-30 08:42:19
@Ventus:這並不能解釋你爲什麼需要索引。如果你只是想爲每個匹配項目運行一個方法,一個簡單的foreach循環肯定是前進的方向......你是否有一個特別的理由需要一個索引? – 2010-09-30 08:59:26
顯然我的語言能力(我的英文水平)並不完美,但我想在同一時間修改集合中的2個元素。然而,你使用'List'而不是set的建議是個好主意,所以問題解決了,你的答案被接受了。 – Ventus 2010-09-30 09:16:04