如何从ArrayList中创build逗号分隔的string?
我将Ids的ArrayList存储在一个处理脚本中,我想将其作为逗号分隔列表吐出,以便输出到debugging日志。 有没有办法,我可以很容易得到这个没有循环的事情?
编辑:感谢Joel指出在.net 2.0及更高版本中可用的列表(T)。 如果你有它可以使事情变得更容易。
是的,我正在回答我自己的问题,但我还没有在这里find它,并认为这是一个相当光滑的事情:
…在VB.NET中:
String.Join(",", CType(TargetArrayList.ToArray(Type.GetType("System.String")), String()))
…在C#中
string.Join(",", (string[])TargetArrayList.ToArray(Type.GetType("System.String")))
唯一的问题是如果你使用Option Strict来确保转换正确的话,那么ArrayList必须包含作为string存储的项目。
编辑:如果您使用.net 2.0或更高版本,只需创build一个列表(string)types的对象,你可以得到你所需要的。 非常感谢乔尔提出这个!
String.Join(",", TargetList.ToArray())
迄今为止的解决scheme都非常复杂。 惯用的解决scheme应该是:
String.Join(",", x.Cast(Of String)().ToArray())
在新的框架版本中不需要花哨的杂技。 假设一个不太现代的版本,下面是最简单的:
Console.WriteLine(String.Join(",", CType(x.ToArray(GetType(String)), String())))
mspmsp的第二个解决scheme也是一个不错的方法,但它不工作,因为它错过了AddressOf
关键字。 另外, Convert.ToString
效率相当低(大量不必要的内部评估), Convert
类一般不是很干净的devise。 我倾向于避免它,尤其是因为它是完全多余的。
就像是:
String.Join(",", myArrayList.toArray(string.GetType()) );
基本上循环你知道…
编辑
怎么样:
string.Join(",", Array.ConvertAll<object, string>(a.ToArray(), Convert.ToString));
string.Join(" ,", myArrayList.ToArray());
这将与.net框架4.5
foo.ToArray().Aggregate((a, b) => (a + "," + b)).ToString()
要么
string.Concat(foo.ToArray().Select(a => a += ",").ToArray())
下面是一个简单的例子,演示了如何使用string列表中的String.Join()创build一个以逗号分隔的string:
List<string> histList = new List<string>(); histList.Add(dt.ToString("MM/dd/yyyy::HH:mm:ss.ffff")); histList.Add(Index.ToString()); /*arValue is array of Singles */ foreach (Single s in arValue) { histList.Add(s.ToString()); } String HistLine = String.Join(",", histList.ToArray());