迭代 C# 字典时保持顺序
标准 C# 字典本身并不保证枚举期间元素的特定顺序。 无论插入顺序如何,顺序可能会发生不可预测的变化。 但是,如果需要,可以通过一些方法来控制迭代顺序。
有序枚举方法
几种策略可以保证字典元素的有序遍历:
1。对 KeyValuePair 对进行排序:
此方法将字典转换为 KeyValuePair
对象的排序数组。
<code class="language-csharp">var sortedKVPs = _Dictionary.OrderBy(x => x.Key).ToArray(); foreach (KeyValuePair<string, string> kvp in sortedKVPs) { Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value)); }</code>
此代码片段根据键对键值对进行排序,然后迭代排序后的数组,在此示例中提供字母顺序。
2。利用 OrderedDictionary:
OrderedDictionary
类显式维护插入顺序。
<code class="language-csharp">// Create an ordered dictionary var orderedDictionary = new OrderedDictionary(); // Add elements orderedDictionary.Add("orange", "1"); orderedDictionary.Add("apple", "4"); orderedDictionary.Add("cucumber", "6"); // Add using indexer orderedDictionary["banana"] = 7; orderedDictionary["pineapple"] = 7; // Enumerate the ordered dictionary foreach (DictionaryEntry entry in orderedDictionary) { Trace.Write(String.Format("{0}={1}", entry.Key, entry.Value)); }</code>
元素按照添加到 OrderedDictionary
的确切顺序进行检索。 请注意,OrderedDictionary
是一个遗留类;对于新项目,请考虑使用 SortedDictionary
或 SortedList<TKey, TValue>
。 SortedDictionary
对键进行排序,并且 SortedList<TKey, TValue>
提供类似的功能,在某些情况下具有更好的性能。
以上是如何保证 C# 中字典元素的有序枚举?的详细内容。更多信息请关注PHP中文网其他相关文章!