我一直以为任何索引都应该是唯一的,但我认为至少对于SQL Server来说不是这样,如下文所示:
Do clustered indexes have to be unique?
最近我不得不在一个集合中存储大量数据,并考虑使用字典,这是通过索引获取对象的最快集合。但我的收藏必须允许重复的密钥。但事实上,重复的密钥不会成为一个问题,因为返回的任何对象都将满足要求(对象不是唯一的,但键是唯一的。)
更多的研究让我看到了以下帖子:
C# Hashset Contains Non-Unique Objects
其中显示了使用“重复键”获取HashSet的方法。他的问题将是我的解决方案,但我想知道是否还有其他任何方式我可以拥有一个带有重复键的列表,这使得我可以非常快速地搜索而无需做任何解决方法来完成这项工作。
答案 0 :(得分:0)
“重复索引不会成为问题,因为它们中的任何一个都符合要求”
如果这样,你的意思是,在按索引检索项目时,获取相同索引值存储的任何项目都会令人满意,那么简单的Dictionary
就足够了。
E.g。
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.