什么是多值主键对象的良好数据结构?

Dav*_*gue 1 .net primary-key data-structures

这个问题最好通过例子来问.假设我有一个名为"Car"的数据库表,其中包含以下列:

(制*,模型*,NumberOfDoors*,描述,价格,里程,颜色)

Make,Model和NumberOfDoors的3元组构成数据库中唯一的主键.我所做的是为每个订单项设置了一个"Car"类,但是如果我想以一个形式的汽车对象的集合

{(特别制作模型和门票,数量,当前销售额),......}

集合中每个项目的第一个元素是汽车的唯一类型,第二个是计数(我有多少类型),第三个元素是那个make-model-doorcount上的任何销售额,I'我遇到了数据结构的困境.

到目前为止我一直在做的是制作一个适合哈希表的结构,如下所示:

//This will be the unique key for the hashtable
dim uniqueID as String = myCar.make + "@" + myCar.model + "@" + myCar.doorCount

//This is the structure that will hold the perinent info about that unique
//car type
Structure inventory
    Dim count as Integer
    Dim currentSales as String
End Structure
Run Code Online (Sandbox Code Playgroud)

此时,我将继续从数据库表填充哈希表,其中哈希表的键是uniqueID字符串,值是"inventory"结构的实例.这是(在我看来)非常不优雅,尤其是哈希表的黑客攻击.对于具有由多个值组成的主键的对象,是否有更好的数据结构解决方案?

Ree*_*sey 5

您可以使用实际的类或结构作为主键.

只需覆盖GetHashCodeEquals - 这允许您将对象本身用作Dictionary中的键,并考虑多个值.