我想以最快的方式寻找通过大量数据,以多个键组合。 我有一个包含此信息的文件,但我想将其加载到内存中。记忆电容不是问题。
key1 | key2 | key3 | key4 | value1 | value2
-----|------|------|------|--------|--------
1 | 1 | 1 | 1 | str | 20
1 | 1 | 1 | 2 | str | 20
1 | 1 | 1 | 3 | str | 20
1 | 1 | 2 | 1 | str | 20
2 | 1 | 1 | 1 | str | 20
我看过一些藏品,但我仍然不确定: http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable
也许多键字典会更好,因为它可以避免密钥中的大量冗余。
public class MultiKeyDictionary<T1, T2, T3> : Dictionary<T1, Dictionary<T2, T3>>
key1 | key2 | key3 | key4 | value1 | value2
-----|------|------|------|--------|--------
1 | 1 | 1 | 1 | str | 20
| | | 2 | str | 20
| | | 3 | str | 20
| | 2 | 1 | str | 20
2 | 1 | 1 | 1 | str | 20
我不会寻求每一把钥匙,但可能只有50%。 我甚至可以接受疯狂的建议。
答案 0 :(得分:1)
您可以简单地使用密钥的Tuple
作为字典密钥和值。
var bank = new Dictionary<Tuple<int, int, int, int, int>, Tuple<string, int>>();
bank.Add(Tuple.Create(k1, k2, k3, k4), Tuple.Create("str", 20));