小编fla*_*ome的帖子

C# - 按排序顺序获取所有环境变量

我正在尝试使用返回 IDictionary 的 System.Environment.GetEnvironmentVariables() 获取所有环境变量的排序列表以进行日志记录。

根据文档 IDictionary 不提供任何排序​​功能: IDictionary Interface

IDictionary 接口允许枚举包含的键和值,但它并不暗示任何特定的排序顺序。

作为一种解决方法,我想出了这样的方法:

var dictionary = Environment.GetEnvironmentVariables();

var keyList = dictionary.Keys.OfType<string>().ToList();
keyList.Sort();

int maxKeyLen = keyList.Max(key => ((string)key).Length);

string logMessage = "";

foreach (string key in keyList)
{
    logMessage = 
        logMessage + 
        Environment.NewLine + 
        (key + ": ").PadRight(maxKeyLen + 2) + 
        dictionary[key];
}

Console.WriteLine(logMessage);
Run Code Online (Sandbox Code Playgroud)

更新

由于@canton7的解决方案,我将上面的代码更改为:

var sortedEntries = Environment.GetEnvironmentVariables().Cast<DictionaryEntry>().OrderBy(entry => entry.Key);

int maxKeyLen = sortedEntries.Max(entry => ((string)entry.Key).Length);

string logMessage = "";

foreach (var entry in sortedEntries)
{ …
Run Code Online (Sandbox Code Playgroud)

.net c# environment-variables

2
推荐指数
1
解决办法
2381
查看次数

标签 统计

.net ×1

c# ×1

environment-variables ×1