从 C# 中的排序数据表创建多个 csv

  • 本文关键字:创建 csv 数据表 排序 c#
  • 更新时间 :
  • 英文 :


我试图从c#中排序的数据表创建多个cvs。我可以从表中创建一个主cvs,但我需要将主表拆分为基于其中一列的几个csv。我试过用每个项目制作一个列表,并在列表上做一个foreach循环,并使用列表项目将行添加到csv。它对第一个项目起作用,但对后续项目不起作用。这是我尝试过的。如有任何帮助,不胜感激。

foreach (string Sender in listSenders)
{

IEnumerable<string> columnNames = dtPHLIP251.Columns.Cast<DataColumn>().
Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dtPHLIP251.Rows)
{                   
if (row[2].ToString() == Sender)
{
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(",", fields));
//row.Delete();
}
else
{                       
break;
}
File.WriteAllText("C:\Users\nkr7\Desktop\DMBErrors\PHLIP251ErrorsProd" + strDate + Sender + ".csv", sb.ToString());
}
}

File.WriteAllText应在内部foreach的外面,不需要breakStringBuilder很可能只在外部foreach中需要,并且可以在每个循环中创建。

foreach (string Sender in listSenders)
{
var sb = new StringBuilder();
IEnumerable<string> columnNames = dtPHLIP251.Columns.Cast<DataColumn>().
Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));
foreach (DataRow row in dtPHLIP251.Rows)
{                   
if (row[2].ToString() == Sender)
{
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(",", fields));
//row.Delete();
}
}

File.WriteAllText("C:\Users\nkr7\Desktop\DMBErrors\PHLIP251ErrorsProd" + strDate + Sender + ".csv", sb.ToString());
}

最新更新