2009-10-26 19 views
5

Chcę przekonwertować listę (Long) na tablicę ciągów.Jak przekonwertować listę (Long) na tablicę znaków? (VB)

Powód: jest to lista identyfikatorów bazy danych i chcę utworzyć ciąg rozdzielany przecinkami, aby przejść do przechowywanego procesu.

Próbowałem to:

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

ale ja wyraźnie nie prawidłowo używając Odlewanie ponieważ zgłasza wyjątek: System.InvalidCastException: Nie można rzutować obiektu typu „System.Int64” wpisz "System.String" ..

Czy istnieje sposób, aby Cast działał w tym celu, czy też utknąłem w funkcji ConvertAll i funkcji pełnomocnika?

Odpowiedz

8

Jeśli można użyć LINQ zrobi to, co chcesz:

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

Doskonałe dzięki - doszedłem do tego samego wniosku 30 sekund później! – elwy

3

Nie można rzucać - chyba można LINQ, trzeba przekonwertować każdy int na ciąg więc masz tablicę ciągów CLR 2.0 ma metodę convertall(), która zrobi to ...

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

zdałem sobie sprawę, że mogę używać convertall z funkcji lambda, aby utrzymać to wszystko ładnie na jednej linii, więc myślę, że to jest moje rozwiązanie:

Dim commaDelimitedList As String = _ 
String.Join(",", itemIDList.ConvertAll(New Converter(Of Long, String)(Function(i As Long) CStr(i))).ToArray) 
Powiązane problemy