c# – 从.NET HashSet中通过索引选择一个元素

目前我正在使用从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子句被多次执行.

编辑

我需要什么?集群是一组集合的一些文档集合.文件通过主题相似性分组成群集.因此,算法的最后一步之一是发现每个集群的标签.但算法并不完美,有时它会使两个或更多个具有相同标签的集群.我想做的只是将这些集群合并成一个.

解决方法

集合通常不具有索引.如果位置对您很重要,则应该使用列表< T>而不是(或可能和)一组.

现在,在.NET 4中的SortedSet<T>略有不同,因为它维护了一个排序的值顺序.然而,它仍然不实现IList T,所以使用ElementAt的索引访问将变得缓慢.

如果您可以提供更多关于您希望此功能的详细信息,这将有所帮助.你的用例目前还不是很清楚.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...