2009-10-26 15 views
5

Quiero convertir una Lista (de Largo) en una matriz de cadenas.¿Cómo convertir una lista (de larga) en una matriz de cadenas? (VB)

Motivo: es una lista de ID de bases de datos y quiero hacer que una cadena delimitada por comas pase a un proceso almacenado.

yo probamos este:

Dim commaDelimitedList As String = String.Join(",", itemIDList.Cast(Of String)().ToArray) 

pero claramente no estoy usando el moldeada correctamente, ya que se produce una excepción: System.InvalidCastException: No se puede convertir objeto de tipo 'System.Int64' para escribir 'System.String' ..

¿Hay alguna manera de que Cast funcione para esto, o estoy atrapado con ConvertAll y una función de delegado?

Respuesta

8

Si puede utilizar LINQ esto va a hacer lo que quiere:

Dim commaDelimitedList As String = String.Join(",", itemIDList.Select(Function(itemID) itemID.ToString()).ToArray()) 
+0

Gracias perfecto - ¡Llegué a la misma conclusión 30 segundos después! – elwy

3

no puede lanzar - a menos que pueda LINQ, usted tiene que convertir cada int en una cadena por lo que tiene una matriz de cadenas CLR 2.0 tiene un método ConvertAll() que va a hacer que ...

string s = String.Join(",", 
       l1.ConvertAll<string>(delegate(int i) 
       { return i.ToString(); }).ToArray()); 
2

me di cuenta de que podía usar ConvertAll con una función lambda para mantener todo muy bien en una línea, así que creo que esto es mi solución:

Dim commaDelimitedList As String = _ 
String.Join(",", itemIDList.ConvertAll(New Converter(Of Long, String)(Function(i As Long) CStr(i))).ToArray) 
Cuestiones relacionadas