Bạn có thể sử dụng List(Of T).ConvertAll
phương pháp:
Dim stringList = {"123", "456", "789"}.ToList
Dim intList = stringList.ConvertAll(Function(str) Int32.Parse(str))
hoặc với các đại biểu
Dim intList = stringList.ConvertAll(AddressOf Int32.Parse)
Nếu bạn chỉ muốn sử dụng Mảng, bạn có thể sử dụng Array.ConvertAll method
:
Dim stringArray = {"123", "456", "789"}
Dim intArray = Array.ConvertAll(stringArray, Function(str) Int32.Parse(str))
Ồ, tôi đã bỏ lỡ chuỗi trống trong dữ liệu mẫu của bạn. Sau đó, bạn cần phải kiểm tra này:
Dim value As Int32
Dim intArray = (From str In stringArray
Let isInt = Int32.TryParse(str, value)
Where isInt
Select Int32.Parse(str)).ToArray
Bằng cách này, đây là như nhau trong cú pháp phương pháp, xấu xí 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
Nguồn
2012-03-08 20:39:35
Tôi không chắc chắn nếu nó được ngụ ý, nhưng điều này không bao gồm trường hợp của một chuyển đổi không thành công (chuỗi rỗng). – vcsjones
@vcsjones: Bạn nói đúng, tôi đã bỏ lỡ chuỗi rỗng trong dữ liệu mẫu, đã chỉnh sửa câu trả lời của tôi cho phù hợp. –
tôi nghĩ rằng nó không xấu xí khi bạn làm xước ConvertAll delegate: 'Dim tempInt%: Dim intA As Int32() = intStrA.Where (Hàm (x) Int32.TryParse (x, tempInt)). Chọn (Function (x) tempInt) .ToArray() ' –