对于字符串。加入(String, String[])这个方法,相信大家都有所了解。唯一不足的就是这个方法只能用于字符串数组,适用场景比较少。我所遇到的场景中,更多的是对List
实现的方式是对IEnumerable
<代码>///& lt; summary>///将数组合并成字符串,Action<& lt; typeparamref name=" T "/祝辞,TextWriter>///& lt;/summary>///& lt; typeparam name=" T "祝辞& lt;/typeparam>///& lt;参数name="可列举的祝辞& lt;/param>///& lt;参数name=胺掷肫鳌弊4? lt;/param>///& lt;参数name=靶卸痹? lt;/param>///& lt;参数name=笆涑觥弊4? lt;/param> 公共静态孔隙Join(这IEnumerable 可列举的,字符串分隔符,Action 行动,TextWriter输出) { Boolean> Func en=enumerable.GetEnumerator (); 如果(en.MoveNext ()) { 做 { 行动(en.Current、输出); },(en.MoveNext (),,writeSp(输出,分离器)); } }///& lt; summary>///将数组合并成字符串,Action<& lt; typeparamref name=" T "/祝辞祝辞///& lt;/summary>///& lt; typeparam name=" T "祝辞& lt;/typeparam>///& lt;参数name="可列举的祝辞& lt;/param>///& lt;参数name=胺掷肫鳌弊4? lt;/param>///& lt;参数name=靶卸痹? lt;/param>///& lt;参数name=笆涑觥弊4? lt;/param> 公共静态孔隙Join (这IEnumerable 可列举的,字符串分隔符,Action 行动,TextWriter输出) { Boolean> Func en=enumerable.GetEnumerator (); 如果(en.MoveNext ()) { 做 { 行动(en.Current); },(en.MoveNext (),,writeSp(输出,分离器)); } }代码>
下面通过实现“DataTable转CSV”来对这两个方法和嵌套的循环进行对比。
在这个演示里,数据表有3列100行数据,对3种实现方式分别进行10000,100000和1000000循环。
演示:
<代码> [TestMethod] 公共空间TestMethod5 () { DataTable dt=new DataTable (“1234”); dt.Columns.Add (“A”); dt.Columns.Add (" B "); dt.Columns.Add (“C”); for (int i=0;我& lt;100;我+ +) { dt.Rows。Add (A +我,“B”+我,“C”+ i); } 新StringBuilder StringBuilder某人;//=(); StringWriter sw;//=new StringWriter(某人); 字符串rowSeparator=" \ n "; 字符串columnSeparator="、";//Console.WriteLine (DateTime.Now。ToString (“yyyy-MM-dd HH: mm: ss: ffffff ")); DateTime time1=DateTime.Now; Int32数=1000000; for (int c=0;c & lt;计数;c++) { 某人=new StringBuilder (); sw=new StringWriter(某人); #地区Action//var列=dt.Columns.OfType ();////写标题//列。加入(columnSeparator (x)=比;x。ColumnName, sw);//sw.Write (rowSeparator);////写数据//dt.Select ()。加入(rowSeparator (x, x1)=比;列。加入(columnSeparator (y, y1)=比;{y1.Write (“”);y1.Write (x [y]);y1.Write (“”);},x1),西南); # endregion #地区Action //var列=dt.Columns.OfType ();//列。加入(columnSeparator (x)=比;sw.Write (x.ColumnName),西南);//sw.Write (rowSeparator);//dt.Select ()。加入(rowSeparator (x)=比;列。加入(columnSeparator (y)=比;{sw.Write (“”);sw.Write (x [y]);sw.Write (“”);},西南),西南); # endregion #区域嵌套 Boolean> Func
测试结果:
类别 循环次数 开始时间 结束时间 蜱虫差 Action