2013-08-11 3 views
3

У меня есть следующий код:В C# как получить список ключей из словаря?

Dictionary <string, decimal> inventory; 
// this is passed in as a parameter. It is a map of name to price 
// I want to get a list of the keys. 
// I THOUGHT I could just do: 

List<string> inventoryList = inventory.Keys.ToList(); 

Но я получаю следующее сообщение об ошибке:

'System.Collections.Generic.Dictionary.KeyCollection' does not contain a definition for 'ToList' and no extension method 'ToList' accepting a first argument of type 'System.Collections.Generic.Dictionary.KeyCollection' could be found (are you missing a using directive or an assembly reference?)

я упускаю с помощью директивы? Есть ли что-то иное, чем

using System.Collections.Generic; 

что мне нужно?

EDIT

List < string> inventoryList = new List<string>(inventory.Keys); 

работает, но только что получил комментарий о LINQ

+1

да, вам также нужно использовать System.Linq; ', потому что там определен метод расширения .ToList()'. – GolfWolf

+0

А, ок, спасибо. – Tim

+1

Не включайте System.Linq; если вы * только * нуждаетесь в ToList() для этого экземпляра once, просто вызовите 'new List (inventory.Keys)' – Alan

ответ

9

Вы можете использовать метод Enumerable.ToList расширения, в этом случае вам нужно добавить следующее:

using System.Linq; 

Или вы можете использовать different constructor of List<T>, в этом случае вам не нужен новый using заявление и может это сделать:

List<string> inventoryList = new List<string>(inventory.Keys); 
+0

Спасибо - я использовал новый/другой ctor - Для этого мне не нужно было и linq. Я должен вернуться и посмотреть, почему я не заметил, что в документах - относительно включения linq – Tim

1

using System.Linq отсутствует, который содержит ToList() метод расширения.

0

Я думаю, что вы должны быть в состоянии проходной коллекции ключей, как в:

foreach (string key in inventory.Keys) 
{ 
    Console.WriteLine(key + ": " + inventory[key].ToString()); 
} 
+0

Я хотел, чтобы не было необходимости явно создавать свой собственный список. – Tim