У меня есть IDictionary (не общий, поэтому я имею дело с object
здесь), и я хотел бы получить от него только элементы в этом IDictionary, которые соответствуют определенному типу ключа K и определенному типу значения V. Существует миллиард способы сделать это, но самый элегантный способ, который я нашел, выглядит следующим образом:
Dictionary<K, V> dict = myIDictionary.OfType<KeyValuePair<K, V>>();
Это компилируется нормально, поэтому я предполагаю, что этот метод МОЖЕТ работать для словаря (он объявлен IEnumerable), но результирующий словарь пуст, хотя там определенно есть KVP, соответствующие этим условиям. Очевидно, я предполагал, что KeyValuePair<K, V>
- это ожидаемый формат, поскольку именно он используется при перечислении по словарю, но это что-то другое? Есть что-то, что мне не хватает?
IDictionary
) можно найти вSystem.Collections.Specialized
, там естьListDictionary
,HybridDictionary
иOrderedDictionary
. - person King King   schedule 06.09.2013