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?
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);
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.
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();
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é.
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;
}