C#.NET中数据的最佳集合

时间:2011-10-10 19:26:00

标签: c# .net arrays collections

我必须存储这些数据:

 "AL" => 1997
 "AK" => 1977
 ...
 "WY" => 1997

在.NET中存储这个的最佳方法是什么?我应该只使用数组,arrayList或其他集合吗?

8 个答案:

答案 0 :(得分:12)

尝试System.Collections.Generic.Dictionary<TKey, TValue>

您可以这样使用它:

var values = new Dictionary<string, int>
{
    { "AL", 1997 },
    { "AK", 1977 },
    ...
    { "WY", 1997 },
};

Console.WriteLine(values["AK"]);  // Writes 1977

答案 1 :(得分:4)

这是一个典型的关键 - &gt;价值存储问题,所以你最好的选择是

SortedList<string, int> 

Dictionary<string, int>     

由于这里的问题是哪一个是最合适的,你可以去:

两者之间的选择取决于您的使用情况。如果您将同时实例化列表,那么SortedList就是您的答案,因为它使用更少的内存并且比Dictionary(SortedDictionary)快一点。如果您打算插入或删除项目,那么Dictionary应该是您的选择,因为它会更快一些。

Source, originally from MSDN

答案 2 :(得分:3)

首先,经验法则 您不应将非泛型集合类型用于已知值,除非您之前使用的是.NET版本2.0

对于唯一键

Dictionary<string,int32> or Dictionary<string,string>

对于非唯一键

List<KeyValuePair<string,int32>> or List<KeyValuePair<string,string>>

答案 3 :(得分:2)

如果您的密钥是唯一的,请使用Dictionary<string, int>

答案 4 :(得分:2)

如果您需要从两位数字符串中查找日期,可以使用Dictionary<string, int>中的System.Collections.Generic

答案 5 :(得分:1)

鉴于限制细节,

Dictionary<string,Int32>似乎是最佳选择

答案 6 :(得分:1)

这取决于一些选择:

  • 作为包含整个段落的字符串(字符数组)
  • 作为数组,List或每个行的集合
  • 作为Dictionary<string, int>,假设“AL”,“AK”等是唯一的,并且您想要根据左侧查找右侧
  • DataSet

- &GT;它完全依赖于 ENTIRELY 您正在处理的数据,约束条件,要求是什么。给我们一些更多的信息,你会得到一个非常详细的答案。 &LT; -

例如:如果您尝试将该数据存储为某些文本以便在网页上显示,则可以使用第一个选项。第二个选项是解析用户输入或从文件导入的某些文本的初始部分。第三个选项,如果您在代码中构建它,或打算在代码或对象模型中查询或以其他方式执行逻辑。如果你要去ADO.NET数据源,那么最后一个。还有更多..您可以使用包含JBIG2编码的抖动图像的BinaryStream对象。 ;)

答案 7 :(得分:1)

如果您希望对其进行排序,可以使用SortedDictionary