如何按C#键自定义词典的排列?

如何按C#键自定义词典的排列?,c#,.net,dictionary,C#,.net,Dictionary,我有一本字典 Dictionary<string, string> myDict = new Dictionary<string, string>() { { "country", "1" }, { "state", "2" }, { "name", "3" }, { "type", "4" } }; Dictionary myDict=newdictionary() { {“国家”,“1”}, {“国家”,“2”}, {“名称”,“3”}, {“类型”,“4”

我有一本字典

Dictionary<string, string> myDict = new Dictionary<string, string>()
{
 { "country", "1" },
 { "state", "2" },
 { "name", "3" },
 { "type", "4" }
};
Dictionary myDict=newdictionary()
{
{“国家”,“1”},
{“国家”,“2”},
{“名称”,“3”},
{“类型”,“4”}
};
我想按如下所示的特定顺序排列dictionary元素

Dictionary<string, string> myDict = new Dictionary<string, string>()
{
  { "name", "3" },
  { "type", "4" },
  { "country", "1" },
  { "state", "2" }
};
Dictionary myDict=newdictionary()
{
{“名称”,“3”},
{“类型”,“4”},
{“国家”,“1”},
{“状态”,“2”}
};

是否可以使用字典类型?如果您能给出解决方案,我将不胜感激。不,您不能依赖
词典中的顺序。它是特定于实现的,并且可以以意外的方式进行更改

在本例中,听起来您确实应该使用自定义类型,使用
Country
State
Name
type
属性

另一种方法是按照您想要的顺序单独列出已知密钥-您可以始终迭代该密钥并获取相应的密钥:

foreach (var key in keysInOrder)
{
    Console.WriteLine("{0}: {1}", key, dictionary[key]);
}

如果您真的希望一个
IDictionary
具有特定的顺序,那么您可以自己实现它,在内部维护一个键顺序作为列表和
字典。但老实说,这感觉像是设计的味道。

不,你不能依赖字典中的顺序。它是特定于实现的,并且可以以意外的方式进行更改

在本例中,听起来您确实应该使用自定义类型,使用
Country
State
Name
type
属性

另一种方法是按照您想要的顺序单独列出已知密钥-您可以始终迭代该密钥并获取相应的密钥:

foreach (var key in keysInOrder)
{
    Console.WriteLine("{0}: {1}", key, dictionary[key]);
}

如果您真的希望一个
IDictionary
具有特定的顺序,那么您可以自己实现它,在内部维护一个键顺序作为列表和
字典。但这感觉像是设计的味道,老实说。

查看查看
OrderedDictionary
class。根据我的knowledge@Rob-该订单根据其算法…因此不支持自定义订单查看查看
OrderedDictionary
类。根据我的knowledge@Rob-那根据其算法订购…因此不支持自定义订购