寻找List <keyvaluepair <string,keyvaluepair <string,=“”string =“”>&gt;&gt; </keyvaluepair <string,>的替代方案

时间:2009-06-24 16:46:07

标签: c# .net-2.0

结束了这个糟糕的数据结构:

List<KeyValuePair<string, KeyValuePair<string, string>>>

它不太可能变得很大(我估计是<1K)而且我会一遍又一遍地重复这个列表。

任何人都可以考虑使用内置类型的更好的选择吗?

2 个答案:

答案 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。如果您需要使用给定的第一个键找到所有元素,这将会更快,更快......