字典.值和 .数组的键(顺序相同)
本文关键字:顺序 值和 数组 字典 | 更新日期: 2023-09-27 18:36:30
有没有一种优雅的方法可以按相同的顺序获取字典的键和值?我担心如果我使用 dict.Values.ToArray()
和 dict.Keys.ToArray()
(或dict.Select(obj => obj.Key)
和dict.Select(obj => obj.Value)
),它们不会以相同的顺序排列。
执行此操作的简单方法是:
foreach (var keyAndVal in dict)
{
keyList.Add(keyAndVal.Key);
valueList.Add(keyAndVal.Value);
}
var keyArray = keyList.ToArray();
var valueArray = valueList.ToArray();
对我来说,这感觉就像是 LINQ 的那种东西(但我知道字典迭代顺序不能保证在两个不同的调用中保持不变)。是否有一种优雅的(即 LINQ 等)方法来按相同的顺序获取它们?
非常感谢您的帮助。
正如 vcsjones 指出的那样,对于标准字典,Keys
和 Values
集合的顺序相同。但是,如果您想要一个方法来创建始终以相同顺序排列的键和值数组,对于 IDictionary<TKey, TValue>
的任何实现,您可以执行以下操作:
var keyArray = new TKey[dict.Count];
var valueArray = new TValue[dict.Count];
var i = 0;
foreach (var keyAndVal in dict)
{
keyArray[i] = keyAndVal.Key;
valueArray[i] = keyAndVal.Value;
i++;
}