3

我有以下代码:

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' 不包含 'ToList' 的定义,并且没有扩展方法 'ToList' 接受类型为 'System.Collections.Generic.Dictionary.KeyCollection' 的第一个参数(你是缺少 using 指令或程序集引用?)

我是否缺少 using 指令?除了

using System.Collections.Generic;

我需要什么?

编辑

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

有效,但刚刚收到关于 LINQ 的评论

4

3 回答 3

12

您可以使用Enumerable.ToList扩展方法,在这种情况下,您需要添加以下内容:

using System.Linq;

或者您可以使用不同的构造函数List<T>,在这种情况下,您不需要 newusing语句并且可以这样做:

List<string> inventoryList = new List<string>(inventory.Keys);
于 2013-08-11T16:16:15.293 回答
2

using System.Linq缺少包含ToList()扩展方法的内容。

于 2013-08-11T16:14:27.087 回答
-1

我认为您应该能够循环访问 Keys 集合,如下所示:

foreach (string key in inventory.Keys)
{
    Console.WriteLine(key + ": " + inventory[key].ToString());
}
于 2013-08-11T16:34:03.323 回答