KeyValuePairのリストをディクショナリに変換できることは知っていますが、その逆の操作をすばやく(手動でループする以外に)実行する方法はありますか?
これは手動の方法です。
foreach (KeyValuePair<double,double> p in dict)
{
list.Add(new KeyValuePair<double,double>(p.Key,p.Value));
}
それほど悪くはありませんが、興味がありました。
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>>
を実装しているためです。
Linqの使用:
myDict.ToList<KeyValuePair<double, double>>();
辞書要素areKeyValuePair
アイテム。
ジェイソンが言ったように。ただし、実際にリストが必要ない場合は、このインターフェイスを実装するため、ICollection <TKey、TValue>にキャストできますが、一部は明示的にのみです。このメソッドは、リスト全体をコピーするのではなく、同じ辞書インスタンスを再利用するだけなので、パフォーマンスが向上します。
IDictionaryであるException.Dataのインスタンスを列挙しようとしています。これが最終的に機能したものです:
ICollection keys = idict.Keys;
foreach(var key in keys)
{
var value = idict[key];
Console.WriteLine("{0}: {1}", key, value);
}
.NET 2.0の場合:
Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>();
List<KeyValuePair<TKey, TValue>> myList = new List<KeyValuePair<TKey, TValue>>(dictionary);