Tengo un System.Array que necesito convertir a string []. ¿Hay una mejor manera de hacer esto que simplemente recorrer el conjunto, llamar a ToString en cada elemento y guardarlo en una cadena []? El problema es que no necesariamente conozco el tipo de elementos hasta el tiempo de ejecución.Convertir System.Array a string []
Respuesta
¿Qué le parece usar LINQ?
string[] foo = someObjectArray.OfType<object>().Select(o => o.ToString()).ToArray();
¿Es sólo Array
? ¿O es (por ejemplo) object[]
? Si es así:
object[] arr = ...
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
Nota que cualquier 1-d matriz de referencia de tipo debe ser moldeable para object[]
(incluso si en realidad es, por ejemplo, Foo[]
), pero el valor de tipo (tales como int[]
) puede' t ser Lo que podría intentar:
Array a = ...
object[] arr = (object[]) a;
string[] strings = Array.ConvertAll<object, string>(arr, Convert.ToString);
Pero si se trata de algo así como int[]
, que tendrá que bucle manualmente.
Es simplemente Array y podría contener tipos de valores (probablemente). – KrisTrip
@KrisTrip - la * variable * podría ser "solo Array", pero el objeto no será; tiene un tipo de matriz definida. También hay una ** gran ** diferencia entre "contener tipos de valores" (que 'object []' puede hacer), y "es una matriz de tipo valor" (como 'int []').Esta diferencia importa en este caso. ¿Puedes aclarar qué ** exactamente ** es la instancia de 'Array'? –
Obtengo la matriz usando el método ToArray. No sé hasta el tiempo de ejecución, pero podría ser un int [], double [], float [], string [], o Complex [] (objeto definido por el usuario) – KrisTrip
Puede utilizar Array.ConvertAll
, así:
string[] strp = Array.ConvertAll<int, string>(arr, Convert.ToString);
Esto probablemente puede ser comprimido, pero se hace en torno a la limitación de no poder utilizar Cast <> Seleccionar o LINQ en un tipo de System.array objeto.
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));
Aún una matriz de objetos genéricos. –
Enfoque simple y básico;
Array personNames = Array.CreateInstance(typeof (string), 3);
// or Array personNames = new string[3];
personNames.SetValue("Ally", 0);
personNames.SetValue("Eloise", 1);
personNames.SetValue("John", 2);
string[] names = (string[]) personNames;
// or string[] names = personNames as string[]
foreach (string name in names)
Console.WriteLine(name);
O simplemente un otro enfoque: Se puede utilizar personNames.ToArray
también:
string[] names = (string[]) personNames.ToArray(typeof (string));
- 1. ¿Cómo convertir de System.array a Object [] en C#
- 2. Serializar un System.Array a una Cadena XML
- 3. convertir std :: string a basic_ostream?
- 4. convertir int a std :: string
- 5. Convertir DateTime a String PHP
- 6. Convertir bytes ASCII [] a String
- 7. Cómo convertir org.jdom.Document a String
- 8. Cómo convertir Guid [] a String?
- 9. cómo convertir NSinteger a String
- 10. Cómo convertir JTextField a String y String en JTextField?
- 11. Cómo convertir datetime a string en linqtosql?
- 12. Cómo convertir Nonetype a int o string?
- 13. Cómo convertir std :: string a LPCSTR?
- 14. Convertir NSDate a String con strftime
- 15. Cómo convertir SID a String en .net
- 16. Python: ¿Convertir de Tuple a String?
- 17. Cómo convertir Platform :: String a char *?
- 18. convertir DOM a String en android?
- 19. ¿Cómo convertir NSString a C string?
- 20. Cómo convertir std :: string a const char *?
- 21. Cómo convertir QString a std :: string?
- 22. Convertir <String> a cadena delimitada
- 23. Convertir array MD5 a String java
- 24. Cómo convertir char * a un sistema :: string^
- 25. Convertir IEnumerable <T> a string []
- 26. Cómo convertir WebResponse.GetResponseStream return into a string?
- 27. ¿Cómo puedo convertir DataRow a string Array?
- 28. Convertir archivo a HEX String Python
- 29. Cómo convertir una HttpServletRequest a String?
- 30. cómo convertir std :: string a QString
Sin conocer los tipos hasta el tiempo de ejecución, que esencialmente necesita para iterar sobre la matriz (ya sea con LINQ o cualquier otro método). – GrayWizardx
(respondió al comentario) –