将字典值转换为数组
将字典值列表转换为数组的最有效方法是什么?
例如,如果我有一个String
,其中Key
是String
, Value
是Foo
,我想获得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();
我不知道哪一个更快或更好。 两者都为我工作。