假设我有一个Dictionary对象:
Dictionary myDictionary<int, SomeObject> = new Dictionary<string, SomeObject>();
现在,我想以相反的顺序遍历字典。我不能使用简单的for循环,因为我不知道字典的关键字。foreach很简单:
foreach (SomeObject object in myDictionary.Values)
{
// Do stuff to object
}
但我如何才能反向执行此操作呢?
发布于 2008-09-17 13:17:01
我会用SortedList而不是字典。您仍然可以通过键来访问它,但也可以通过索引来访问它。
SortedList sCol = new SortedList();
sCol.Add("bee", "Some extended string matching bee");
sCol.Add("ay", "value matching ay");
sCol.Add("cee", "Just a standard cee");
// Go through it backwards.
for (int i = sCol.Count - 1; i >=0 ; i--)
Console.WriteLine("sCol[" + i.ToString() + "] = " + sCol.GetByIndex(i));
// Reference By Key
foreach (string i in sCol.Keys)
Console.WriteLine("sCol[" + i + "] = " + sCol[i]);
// Enumerate all values
foreach (string i in sCol.Values)
Console.WriteLine(i);
值得注意的是,排序列表仅存储按键排序的键/值对。
发布于 2008-09-17 13:02:21
字典或任何其他形式的哈希表都没有排序。因此,您正在尝试做的是毫无意义的:)
发布于 2008-09-17 21:05:53
如果您使用的是.NET 3.5,则可以在IEnumerables上使用.Reverse()扩展方法。例如:
foeach (SomeObject o in myDictionary.Values.Reverse())
{
// Do stuff to object
}
https://stackoverflow.com/questions/82881
复制相似问题