44 votes

Convertir System.Array en chaîne []

J'ai un System.Array que je dois convertir en chaîne []. Existe-t-il une meilleure façon de le faire que de simplement parcourir le tableau, appeler ToString sur chaque élément et enregistrer dans une chaîne []? Le problème est que je ne connais pas nécessairement le type des éléments jusqu'à l'exécution.

72voto

Craig Stuntz Points 95965

Que diriez-vous d'utiliser LINQ?

 string[] foo = someObjectArray.OfType<object>().Select(o => o.ToString()).ToArray();
 

13voto

Marc Gravell Points 482669

Est-ce seulement Array ? Ou est-ce (par exemple) object[] ? Si c'est le cas:

 object[] arr = ...
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
 

Notez que tout tableau 1-d de types de référence doit être convertible en object[] (même s'il s'agit en fait, par exemple, Foo[] ), mais les types de valeur (tels que int[] ) ne peut pas l'être. Vous pouvez donc essayer:

 Array a = ...
object[] arr = (object[]) a;
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
 

Mais si c'est quelque chose comme int[] , vous devrez boucler manuellement.

4voto

Amit Degadwala Points 31

Vous pouvez utiliser Array.ConvertAll , comme ceci:

 string[] strp = Array.ConvertAll<int, string>(arr, Convert.ToString);
 

0voto

bougiefever Points 16

Cela peut probablement être compressé, mais il contourne la limitation de ne pas pouvoir utiliser Cast <> ou Linq Select sur un type d'objet System.Array.

 Type myType = MethodToGetMyEnumType();
Array enumValuesArray = Enum.GetValues(myType);
object[] objectValues new object[enumValuesArray.Length];
Array.Copy(enumValuesArray, objectValues, enumValuesArray.Length);

var correctTypeIEnumerable = objectValues.Select(x => Convert.ChangeType(x, t));
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X