Подтвердить что ты не робот

Конвертировать словарь в список <KeyValuePair>

Я знаю, что его можно преобразовать List of KeyValuePair в словарь, но есть ли быстрый способ (помимо циклического перехода вручную) для выполнения операции наоборот?

Это будет ручной способ,

foreach (KeyValuePair<double,double> p in dict)
{
    list.Add(new KeyValuePair<double,double>(p.Key,p.Value));
}

Не так уж плохо, но мне было просто любопытно.

4b9b3361

Ответ 1

Чтобы преобразовать a 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>>.

Ответ 2

Использование linq:

myDict.ToList<KeyValuePair<double, double>>();

Элементы словаря - это элементы KeyValuePair.

Ответ 3

Как сказал Джейсон. Но если вам действительно не нужен список, вы можете просто передать его в ICollection < TKey, TValue > потому что он реализует этот интерфейс, но некоторые части только явно. Этот метод работает лучше, потому что он не копирует весь список, просто повторно использует один и тот же экземпляр словаря.

Ответ 4

Для .NET 2.0:

Dictionary<TKey, TValue> dictionary = new Dictionary<TKey, TValue>();
List<KeyValuePair<TKey, TValue>> myList = new List<KeyValuePair<TKey, TValue>>(dictionary);

Ответ 5

Я пытаюсь перечислить экземпляр Exception.Data, который является IDictionary. Это то, что наконец-то сработало:

    ICollection keys = idict.Keys;
    foreach(var key in keys)
    {
       var value = idict[key];
       Console.WriteLine("{0}: {1}", key, value);
    }