Попытка извлечь список ключей из .NET Dictionary

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

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

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

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

Всегда рекомендуется использовать IEnumerable (более общий тип).

Ответ 4

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

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