将Dictionary.keyscollection转换为字符串数组

时间:2009-10-25 16:41:18

标签: c# collections

我有一个Dictionary<string, List<Order>>,我想要一个数组中的键列表。但是当我选择

string[] keys = dictionary.Keys;

这不会编译。

如何将KeysCollection转换为字符串数组?

5 个答案:

答案 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();

在哪里???是你的关键类型。