将字典值转换为数组

将字典值列表转换为数组的最有效方法是什么?

例如,如果我有一个String ,其中KeyStringValueFoo ,我想获得Foo[]

我正在使用VS 2005,C#2.0

 // dict is Dictionary<string, Foo> Foo[] foos = new Foo[dict.Count]; dict.Values.CopyTo(foos, 0); // or in C# 3.0: var foos = dict.Values.ToArray(); 

将它存储在一个列表中。 这很容易;

 List<Foo> arr = new List<Foo>(dict.Values); 

当然,如果你特别想要一个数组,

 Foo[] arr = (new List<Foo>(dict.Values)).ToArray(); 

值上有一个ToArray()函数:

 Foo[] arr = new Foo[dict.Count]; dict.Values.CopyTo(arr, 0); 

但我不认为它的高效率(我没有真正尝试,但我想它将所有这些值复制到arrays)。 你真的需要一个数组? 如果没有,我会尝试通过IEnumerable:

 IEnumerable<Foo> foos = dict.Values; 

如果你想使用linq,那么你可以试试以下内容:

 Dictionary<string, object> dict = new Dictionary<string, object>(); var arr = dict.Select(z => z.Value).ToArray(); 

我不知道哪一个更快或更好。 两者都为我工作。