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

前端之家收集整理的这篇文章主要介绍了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的索引访问将变得缓慢.

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

原文链接:https://www.f2er.com/csharp/94972.html

猜你在找的C#相关文章