如何按字母顺序遍历Hashtable的键?

Pav*_*tov 2 c# traversal hashtable key

以升序字母顺序遍历哈希表键的最简单方法是什么?

Jar*_*Par 12

这完全取决于密钥的类型.但我们假设他们是一个字符串.您可以使用以下LINQ查询

Hashtable table = GetHashTable();
var keys = table.Keys.Cast<String>().OrderBy(x => x);
Run Code Online (Sandbox Code Playgroud)

对于更复杂的结构,LINQ查询只是略有不同.让我们假设您对密钥有以下定义

struct Name {
  public string First;
  public string Last;
  // Equality code omitted
}
Run Code Online (Sandbox Code Playgroud)

LINQ代码如下

Hashtable table = GetHashtable();
var keys = table.Keys.Cast<Name>().OrderBy(x => x.First).ThenBy(x => x.Last);
Run Code Online (Sandbox Code Playgroud)


Pav*_*tov 7

好吧,我发现这个片段最适合我的情况:

Hashtable settings = GetSettings();
ArrayList keys = new ArrayList();
keys.AddRange(settings.Keys);
keys.Sort();
foreach (object key in keys)
{
    // Logic here
}