以指定分隔符串联字符串

  

对于字符串。加入(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> Funcen=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> Funcen=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

以指定分隔符串联字符串