Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 哈希表到字典的转换_C# - Fatal编程技术网

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的功能不同。