目前我正在使用从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
是一组某些文档集合的聚类。文档根据主题相似性分组成簇。算法的最后一步之一是为每个簇发现标签。但算法并不完美,有时会生成两个或多个具有相同标签的簇。我想做的就是将这些簇合并成一个大簇。
List<T>
”,但是如果我想在我的集合中拥有唯一的条目和顺序呢? - whiteshoozHashSet<T>
和一个List<T>
,并让它们保持同步。我不相信在BCL中有任何集合实现可以保证维护位置。 - Jon Skeet