C# 哈希表到字典的转换
我已将哈希表转换为字典。但问题是当我去打印它没有按顺序显示的值时C# 哈希表到字典的转换,c#,C#,我已将哈希表转换为字典。但问题是当我去打印它没有按顺序显示的值时 aHashtable.Add(1014, "201"); aHashtable.Add(10, "ATIB"); aHashtable.Add(143, "LOVE"); aHashtable.Add(111, "HATE"); var dict= aHashtable.Cast<DictionaryEntry>().ToDictionary(d => d.Key, d => d.Value); for
aHashtable.Add(1014, "201");
aHashtable.Add(10, "ATIB");
aHashtable.Add(143, "LOVE");
aHashtable.Add(111, "HATE");
var dict= aHashtable.Cast<DictionaryEntry>().ToDictionary(d => d.Key, d => d.Value);
foreach (KeyValuePair<object, object> keyValuePair in dict)
{
Console.WriteLine(keyValuePair.Key + ": " +keyValuePair.Value);
}
aHashtable.Add(1014,“201”);
aHashtable.添加(10,“ATIB”);
加上(143,“爱”);
aHashtable.添加(111,“仇恨”);
var dict=aHashtable.Cast().ToDictionary(d=>d.Key,d=>d.Value);
foreach(dict中的KeyValuePair KeyValuePair)
{
Console.WriteLine(keyValuePair.Key+:“+keyValuePair.Value);
}
有什么问题吗?默认情况下,字典没有排序。C#有一个想法
另请参见:字典不根据条目顺序存储值 从文档: 出于枚举的目的,字典中的每一项都被视为 表示值及其属性的KeyValuePair结构 钥匙返回项目的顺序未定义 你需要一个
请参见此项。请测试此代码:
var aHashtable = new Hashtable {{1014, "201"}, {10, "ATIB"}, {143, "LOVE"}, {111, "HATE"}};
var dict = aHashtable.Cast<DictionaryEntry> ().ToDictionary(d => d.Key, d => d.Value).OrderBy(x=>x.Key);
foreach (var keyValuePair in dict)
{
Console.WriteLine(keyValuePair.Key + ": " + keyValuePair.Value);
}
var aHashtable=新哈希表{{1014,“201”},{10,“ATIB”},{143,“LOVE”},{111,“HATE”};
var dict=aHashtable.Cast().ToDictionary(d=>d.Key,d=>d.Value).OrderBy(x=>x.Key);
foreach(dict中的var keyValuePair)
{
Console.WriteLine(keyValuePair.Key+:“+keyValuePair.Value);
}
如果您需要按名称排序,只需将.OrderBy(x=>x.name)替换为.OrderBy(x=>x.Key),我建议使用通用的SortedDictionary
,它更容易从字典中转换,使用时避免装箱取决于OP想要什么。SortedDict基于键进行排序。这与OrderedDictionary的功能不同。