web-dev-qa-db-fra.com

Convertir Dictionary.keyscollection en tableau de chaînes

J'ai un Dictionary<string, List<Order>> et je veux avoir la liste des clés dans un tableau. Mais quand je choisis 

string[] keys = dictionary.Keys;

Cela ne compile pas.

Comment convertir KeysCollection en un tableau de chaînes?

49
leora

En supposant que vous utilisiez .NET 3.5 ou version ultérieure (using System.Linq;):

string[] keys = dictionary.Keys.ToArray();

Sinon, vous devrez utiliser la méthode CopyTo ou utiliser une boucle:

string[] keys = new string[dictionary.Keys.Count];
dictionary.Keys.CopyTo(keys, 0);
98
Thomas Levesque

Avec dictionary.Keys.CopyTo (keys, 0);

Si vous n'avez pas besoin du tableau (ce dont vous n'avez généralement pas besoin), vous pouvez simplement parcourir les clés.

4
Foxfire

Utilisez ceci si vos clés ne sont pas de type chaîne. Cela nécessite LINQ.

string[] keys = dictionary.Keys.Select(x => x.ToString()).ToArray();
2
Kim Johansson

Malheureusement, je n'ai pas de VS à proximité pour vérifier cela, mais je pense que cela pourrait fonctionner:

var keysCol = dictionary.Keys;
var keysList = new List<???>(keysCol);
string[] keys = keysList.ToArray();

où ??? est votre type de clé.

0
LJM

Ou peut-être une extension générique pratique ...

    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;
    }
0
Craig G