我知道可以将KeyValuePair的List转换为Dictionary,但是有一种快速的方法(除了手动循环之外)还能执行相反的操作吗?
这将是手动方式,
foreach (KeyValuePair<double,double> p in dict)
{
list.Add(new KeyValuePair<double,double>(p.Key,p.Value));
}
不是那么糟糕,但我只是好奇。
答案 0 :(得分:104)
要将Dictionary<TKey, TValue>
转换为List<KeyValuePair<TKey, TValue>>
,您可以说
var list = dictionary.ToList();
或更详细的
var list = dictionary.ToList<KeyValuePair<TKey, TValue>>();
这是因为Dictionary<TKey, TValue>
实现了IEnumerable<KeyValuePair<TKey, TValue>>
。
答案 1 :(得分:8)
使用linq:
myDict.ToList<KeyValuePair<double, double>>();
字典元素是 KeyValuePair
项。
答案 2 :(得分:5)
答案 3 :(得分:0)
对于.NET 2.0:
Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>();
List<KeyValuePair<TKey, TValue>> myList = new List<KeyValuePair<TKey, TValue>>(dictionary);
答案 4 :(得分:0)
我一直在尝试枚举Exception.Data的实例,这是一个IDictionary。这是最终奏效的:
ICollection keys = idict.Keys;
foreach(var key in keys)
{
var value = idict[key];
Console.WriteLine("{0}: {1}", key, value);
}