目前我使用的派生自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