我必须存储这些数据:
"AL" => 1997
"AK" => 1977
...
"WY" => 1997
在.NET中存储这个的最佳方法是什么?我应该只使用数组,arrayList或其他集合吗?
答案 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应该是您的选择,因为它会更快一些。
答案 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