3
A
回答
5
使用可以简单地用一个struct
,例如:
struct CompositeKey<T1,T2>
{
public T1 Item1;
public T2 Item2;
}
然后用它作为关键。
2
如果您使用的是.NET 4.0,则可以使用Tuple。
否则你可以自己创建一个Tuple。
发现在计算器上:Tuples(or arrays) as Dictionary keys in C#
struct Tuple<T, U, W> : IEquatable<Tuple<T,U,W>>
{
readonly T first;
readonly U second;
readonly W third;
public Tuple(T first, U second, W third)
{
this.first = first;
this.second = second;
this.third = third;
}
public T First { get { return first; } }
public U Second { get { return second; } }
public W Third { get { return third; } }
public override int GetHashCode()
{
return first.GetHashCode()^second.GetHashCode()^third.GetHashCode();
}
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
{
return false;
}
return Equals((Tuple<T, U, W>)obj);
}
public bool Equals(Tuple<T, U, W> other)
{
return other.first.Equals(first) && other.second.Equals(second) && other.third.Equals(third);
}
}
2
像LaGrandMere说,你可以使用System.Tuple如果你在.NET 4.0或更高版本:
Tuple<int,string> key = Tuple.Create(0, "Test");
另请注意,如果你将字符串,整数等等作为键的字典中,你将不得不特殊处理SQL中的NULL。在Dictionary中不能有空键。
var dict = new Dictionary<Tuple<string, int>, string>();
var address1 = Tuple.Create("5th Avenue",15);
var address2 = Tuple.Create("5th Avenue",25);
var address3 = Tuple.Create("Dag Hammarskjölds väg", 4);
dict[address1] = "Donald";
dict[address2] = "Bob";
dict[address3] = "Kalle";
// ...
int number = Int32.Parse("25");
var addressKey = Tuple.Create("5th Avenue",number);
string name = dict[addressKey]; // Bob
相关问题
- 1. 两个哈希表,带有双键或不同解决方案的哈希表?
- 2. 使用SQL查询结果中的主键创建哈希表的哈希表作为哈希表键值
- 3. 带多个键的Ruby哈希查找
- 4. 带格式列表的哈希表转换回哈希表powershell
- 5. redis-py手表哈希键
- 6. 多键哈希表(unordered_map)
- 7. 哈希表键语法来引用嵌入哈希表元素
- 8. 如何比较两个包含〜25000个哈希的哈希?
- 9. 如何比较两个哈希表
- 10. 模糊匹配两个哈希表?
- 11. 嵌套哈希排序哈希键
- 12. 创建一个整数和值为整数的哈希集键的哈希表
- 13. 带整数键的哈希表(字典等)
- 14. Java对象比较和带对象键的哈希表
- 15. Ruby:同时循环两个哈希,一个是嵌套哈希
- 16. 两个表的SQL主键
- 17. 如何将两个哈希合并到数组的哈希中?
- 18. 合并哈希键
- 19. 哈希键需要
- 20. 更改键“(键%哈希){}” - 环
- 21. 两个键是相同的哈希映射在写“现有的?
- 22. Clojure的合并在哈希表键值
- 23. 考虑单个哈希键值合并哈希阵列
- 24. 哈希表vs哈希列表与哈希树?
- 25. 哈希表中的搜索哈希
- 26. 带两个键的哈希映射 - 查找链接到一个键的所有元素。 C++
- 27. 没有哈希的主干?
- 28. Java哈希表,带while循环
- 29. Perl:哈希中的Grep键
- 30. 完整的哈希键
我认为你正在寻找的术语是复合密钥或复合密钥。具有两个属性的密钥仍然只是一个密钥,而不是两个。 – sqlvogel 2011-01-14 16:40:41