寻找使用多个密钥C#分组的大量数据

Nas*_*ter 6 c# arrays performance dictionary list

我想以最快的方式寻找通过大量数据,以多个键组合.我有一个包含此信息的文件,但我想将其加载到内存中.记忆电容不是问题.

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
Run Code Online (Sandbox Code Playgroud)

我看了一些收藏品,但我仍然不确定: 在此输入图像描述 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
Run Code Online (Sandbox Code Playgroud)

我不会寻求每一把钥匙,但可能只有50%.我甚至对疯狂的建议持开放态度.

Ben*_*dgi 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));
Run Code Online (Sandbox Code Playgroud)