【问题标题】:list with non-unique index具有非唯一索引的列表
【发布时间】:2013-01-05 04:45:01
【问题描述】:

我一直认为 any 索引应该是唯一的,但我认为至少对于 SQL Server 而言并非如此,如下面的帖子所示:

Do clustered indexes have to be unique?

最近我不得不在一个集合中存储大量数据,并考虑使用字典,因为它是按索引获取对象的最快集合。但是我的收藏必须允许重复的键。但实际上重复键不会成为问题,因为返回的任何对象都会满足要求(对象并不完全唯一,但键会)。

更多的研究使我发了以下帖子:

C# Hashset Contains Non-Unique Objects

这显示了一种使用“重复键”获取 HashSet 的方法。他的问题将是我的解决方案,但我想知道是否有任何其他方法可以让我拥有一个包含重复键的列表,这样我就可以非常快速地搜索,而无需采取任何解决方法来完成这项工作。

【问题讨论】:

  • 如果您有重复的键,您将如何使用该键将对象从列表中取出,因为可能有超过 1 个,或者如果有超过 1 个,您打算返回许多项目同一个指标???据我所知,没有 Dictionary 或 List 实现允许重复键,您必须从头开始构建一个,这就是为什么甚至使用一个键,就好像它的冗余有重复一样。
  • 很高兴您引用了其他问题,但请编辑您的问题,这样我就不必阅读其他问题来理解您的问题。
  • @JohnSaunders 感谢您的提示,我希望现在更清楚了。我会努力改进以后的帖子。

标签: c#


【解决方案1】:

“重复索引不会有问题,因为它们中的任何一个都可以满足要求”

如果您的意思是在按索引检索项目时获取针对相同索引值存储的任何项目会让您满意,那么简单的Dictionary 就足够了。

例如

Dictionary<int, string> myData = new Dictionary<int, string>();

myData[1] = "foo";
myData[2] = "bar";
myData[2] = "baz"; // overwrites "bar"

var myDatum = myData[2]; // retrievs "baz" not "bar", but this is satisfactory.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 2020-04-28
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多