Попытка извлечь список ключей из словаря .NET - PullRequest
17 голосов
/ 08 марта 2011

Подозреваю, что мой мозг не работает сегодня - мне нужно извлечь список ключей и т.д .:

Dictionary<string, MyClass>  myDict;
List<String> myKeys = myDict.Keys;

Не удается скомпилировать вторую строку, поскольку свойство Keys возвращает класс KeyCollection, а не список <> ключевых объектов.

Ответы [ 4 ]

32 голосов
/ 08 марта 2011

Используя LINQ, вы можете делать следующее ...

List<String> myKeys = myDict.Keys.ToList();

Однако, в зависимости от того, какова ваша цель с ключами (выборочное перечисление и т. Д.), Может иметь смысл работать с коллекцией ключей, а не преобразовывать ее в список.

21 голосов
/ 08 марта 2011

KeyCollection реализует интерфейс IEnumerable.

Вы можете использовать метод расширения для преобразования его в список.

List<String> myKeys = myDict.Keys.ToList();

Или использовать другой конструктор:

List<String> myKeys = new List<String>(myDict.Keys);
5 голосов
/ 08 марта 2011

Да, вы можете попробовать - IEnumerable<String> myKeys = myDict.Keys;

Всегда хорошая идея использовать IEnumerable (более общий тип).

2 голосов
/ 08 марта 2011

Если вам нужен настоящий список:

List<string> myKeys = new List<string>(myDict.Keys);
...