È possibile utilizzare il metodo List(Of T).ConvertAll
:
Dim stringList = {"123", "456", "789"}.ToList
Dim intList = stringList.ConvertAll(Function(str) Int32.Parse(str))
o con il delegato
Dim intList = stringList.ConvertAll(AddressOf Int32.Parse)
Se si desidera utilizzare solo Array, si possibile utilizzare il Array.ConvertAll method
:
Dim stringArray = {"123", "456", "789"}
Dim intArray = Array.ConvertAll(stringArray, Function(str) Int32.Parse(str))
Oh, ho perso la stringa vuota nei dati di esempio. Allora avete bisogno di controllare questo:
Dim value As Int32
Dim intArray = (From str In stringArray
Let isInt = Int32.TryParse(str, value)
Where isInt
Select Int32.Parse(str)).ToArray
A proposito, qui è la stessa sintassi metodo, brutta as always in VB.NET:
Dim intArray = Array.ConvertAll(stringArray,
Function(str) New With {
.IsInt = Int32.TryParse(str, value),
.Value = value
}).Where(Function(result) result.IsInt).
Select(Function(result) result.Value).ToArray
fonte
2012-03-08 20:39:35
Non sono sicuro se è implicito, ma questo non copre il caso di una conversione fallita (stringa vuota). – vcsjones
@vcsjones: hai ragione, ho perso la stringa vuota nei dati di esempio, ho modificato la mia risposta di conseguenza. –
Penso che non sia brutto quando si gratifica il delegato di ConvertAll: 'Dim tempInt%: Dim intA As Int32() = intStrA.Where (Funzione (x) Int32.TryParse (x, tempInt)). Select (Function (x) tempInt) .ToArray() ' –