结束了这个糟糕的数据结构:
List<KeyValuePair<string, KeyValuePair<string, string>>>
它不太可能变得很大(我估计是<1K)而且我会一遍又一遍地重复这个列表。
任何人都可以考虑使用内置类型的更好的选择吗?
答案 0 :(得分:10)
struct MrStruct
{
public string Key1,
public string Key2,
public string Value1
}
List<MrStruct>;
这假设您按顺序访问列表,就像您说迭代一样。潜在地,其他数据结构可能更快搜索。
答案 1 :(得分:10)
最好的选择是包装你自己的Tuple类,有点像shipping in .NET 4.0。
然后你可以有一个:
List<Tuple<string,string,string>>
这很容易用.NET 2.0编写 - 它基本上只是一个三元组的值,而不是KeyValuePair中的2。但是,.NET 2.0中的三元组值没有内置的等价物。
编辑:
在阅读了关于在另一篇文章中查询的评论后,我想我也会提到这一点 -
即使您在key1中没有唯一值,也可以使用以下方法显着加快任何类型的查询/搜索:
Dictionary<string, List<KeyValuePair<string,string>>>
然后,您可以通过第一个元素中的键查找它们的列表,而不是存储单个KeyValuePair。如果您需要使用给定的第一个键找到所有元素,这将会更快,更快......