我想将List(Long)转换为字符串数组。
原因:它是一个数据库ID列表,我想用逗号分隔的字符串传递给存储过程。
我试过了:
Dim commaDelimitedList As String = String.Join(",", itemIDList.Cast(Of String)().ToArray)
但我显然没有正确使用Cast,因为它会引发异常: System.InvalidCastException:无法将“System.Int64”类型的对象强制转换为“System.String”..
有没有办法让Cast为此工作,还是我坚持使用ConvertAll和委托函数?
答案 0 :(得分:8)
如果你可以使用LINQ,这将做你想要的:
Dim commaDelimitedList As String = String.Join(",", itemIDList.Select(Function(itemID) itemID.ToString()).ToArray())
答案 1 :(得分:3)
无法强制转换 - 除非您能使用LINQ,否则必须将每个int转换为字符串,以便拥有一个字符串数组 CLR 2.0有一个ConvertAll()方法,可以做到这一点......
string s = String.Join(",",
l1.ConvertAll<string>(delegate(int i)
{ return i.ToString(); }).ToArray());
答案 2 :(得分:2)
我意识到我可以使用带有lambda函数的ConvertAll将它保存在一条线上,所以我认为这是我的解决方案:
Dim commaDelimitedList As String = _
String.Join(",", itemIDList.ConvertAll(New Converter(Of Long, String)(Function(i As Long) CStr(i))).ToArray)