字典按哈希排序,而不按顺序排序

时间:2018-12-28 10:29:34

标签: c# asp.net

我有appsettings.json,我想把它们全部拿来放进字典。

 var conf = configuration.GetSection("Configuration");
 var serverConf = new Dictionary<string, string>();
 foreach (var item in conf.AsEnumerable())
 {
    if (item.Value != null && item.Key != null)
    {
         serverConf.Add(item.Key, item.Value);
    }
 }

但是这段代码我不知道,也许是哈希?不是按顺序,不是按字母顺序。应该按顺序

我的应用设置:

 "Configuration": {
    "response_type": "id_token token",
    "scope": "openid profile api1",
    "start_checksession": true,
    "silent_renew": false,
  }

1 个答案:

答案 0 :(得分:3)

Dictionary<,>不保证任何特定的顺序。如果需要特定的排序顺序,则应使用其他数据结构。

但是,对于配置,我想说要求任何特定的命令本身就是一种味道。可以将其转换为特定的稳定顺序,以便(例如)获得一些哈希值,但这对于LINQ来说很容易,例如

var ordered = settings.OrderBy(pair => pair.Key);

但是,如果您确实需要“原始文件顺序”,则可能要使用其他数据模型作为开始。代表实际JSON的JObject。我建议您认真考虑一下您当前这样做的愿望是否真的是一个具体要求,以及是否有其他方法可以实现相同的更大目标。