如何在c#中按键自定义字典的排列

本文关键字:自定义 字典 排列 | 更新日期: 2023-09-27 18:03:10

我有一本字典

Dictionary<string, string> myDict = new Dictionary<string, string>()
{
 { "country", "1" },
 { "state", "2" },
 { "name", "3" },
 { "type", "4" }
};

我想按照如下所示的特定顺序排列字典元素

Dictionary<string, string> myDict = new Dictionary<string, string>()
{
  { "name", "3" },
  { "type", "4" },
  { "country", "1" },
  { "state", "2" }
};

可以是字典类型吗?如果您能给出一个解决方案,我将不胜感激

如何在c#中按键自定义字典的排列

不,你不能依赖Dictionary的顺序。它是特定于实现的,并且可以以意想不到的方式更改。

在这种情况下,听起来像真的你应该有一个自定义类型,而不是Country, State, NameType属性。

另一种选择是按照你想要的顺序有一个已知键的单独列表——你总是可以遍历并获取适当的键:

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

如果你真的真的想要一个特定顺序的IDictionary<,>,你总是可以自己实现它,在内部维护一个键顺序作为一个列表一个Dictionary<,>。但老实说,这感觉像是一种设计的味道。