假设我有一个,然后按特定顺序Dictionary
添加每个key
和条目。
现在,如果我希望以后能够以添加条目的相同顺序对其进行迭代,这是我在这本字典上使用简单循环获得的顺序吗? value
Dictionary
foreach
如果没有,我会很高兴听到我该怎么做,我知道这可以很容易地完成List
,Dictionary
但我不想这样做。
谢谢
假设我有一个,然后按特定顺序Dictionary
添加每个key
和条目。
现在,如果我希望以后能够以添加条目的相同顺序对其进行迭代,这是我在这本字典上使用简单循环获得的顺序吗? value
Dictionary
foreach
如果没有,我会很高兴听到我该怎么做,我知道这可以很容易地完成List
,Dictionary
但我不想这样做。
谢谢
Normal Dictionary
does not guarantee order of items.
You need OrderedDictionary
if you want to maintain order items where added to it. Note that there is no generic version of this class in .Net framework, so either have to give up some type-safety or find other implementation (i.e. https://www.codeproject.com/Articles/18615/OrderedDictionary-T-A-generic-implementation-of-IO as suggested by Tim S).
Alternatively if O(log n) lookup is fine and keys should be sorted - SortedDictionary.
听起来你想要的是:http Queue<T>
: //msdn.microsoft.com/en-us/library/7977ey2c.aspx
KeyValuePair<T, U>
按照您想要的顺序将您的项目添加到其中,然后foreach
按先进/先出顺序将其添加。
Dictionary
s 是哈希表,这意味着您不能保证迭代这些对将按照添加它们的相同顺序返回它们。
每对都是 a KeyValuePair<T_K, T_V>
,因此您可以拥有 a List<KeyValuePair<string, string>>
,如果这是您需要的话,您可以按照添加它们的顺序进行迭代。
字典的内部排序将取决于使用的散列函数。但是,如果您需要数据的排序视图,您可以使用Enumerable.OrderBy
.