我想以尽可能最快的方式搜索与多个键组合在一起的海量数据。
我有一个包含此信息的文件,但我想在内存中加载它。内存电容不是问题。

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

我不会寻找所有 key ,但可能会寻找其中的50%。
我愿意接受疯狂的建议。

最佳答案

您可以简单地将键的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));

关于c# - 搜寻通过多个键C#分组的海量数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22947400/

10-08 21:08