我有一个Dictionary<string, List<Order>>
,我想要一个数组中的键列表。但是当我选择
string[] keys = dictionary.Keys;
这不会编译。
如何将KeysCollection
转换为字符串数组?
答案 0 :(得分:102)
假设您使用的是.NET 3.5或更高版本(using System.Linq;
):
string[] keys = dictionary.Keys.ToArray();
否则,您必须使用CopyTo方法,或使用循环:
string[] keys = new string[dictionary.Keys.Count];
dictionary.Keys.CopyTo(keys, 0);
答案 1 :(得分:4)
使用dictionary.Keys.CopyTo (keys, 0);
如果你不需要数组(你通常不需要),你可以迭代键。
答案 2 :(得分:2)
如果您的密钥不是字符串类型,请使用此选项。它需要LINQ。
string[] keys = dictionary.Keys.Select(x => x.ToString()).ToArray();
答案 3 :(得分:1)
或许是一个方便的通用扩展......
public static T2[] ToValueArray<T1, T2>(this Dictionary<T1, T2> value)
{
var values = new T2[value.Values.Count];
value.Values.CopyTo(values, 0);
return values;
}
答案 4 :(得分:0)
不幸的是,我附近没有VS检查这个,但我认为这样的事情可能有用:
var keysCol = dictionary.Keys;
var keysList = new List<???>(keysCol);
string[] keys = keysList.ToArray();
在哪里???是你的关键类型。