微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/csharp/94972.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐