我想使用foreach循环和方法“WriteDataTable”将不同的DataTable对象导出到不同的.csv文件中。 Datatable对象的大小非常小(只有15列和2行)。
这是foreach循环:
foreach (var dt in DataTableList)
{
// Name of the file
string fileName = DateTime.Now.Year.ToString();
// Call method
WriteDataTable(fileName, dt);
}
这是方法:
public void WriteDataTable(string fileName, DataTable dt)
{
StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>()
.Select(column => column.ColumnName);
sb.AppendLine(string.Join(";", columnNames));
foreach (DataRow row in dt.Rows)
{
IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
sb.AppendLine(string.Join(";", fields));
}
File.WriteAllText(fileName, sb.ToString());
}
程序运行正常,但实际上只导出了一些DataTable对象。看起来,当新的DataTable对象到来时,仍然会导出先前的DataTable对象。如果我使用“Thread.Sleep(500)”暂停进程,则导出所有对象:
foreach (var dt in DataTableList)
{
// Name of the file
string fileName = DateTime.Now.Year.ToString();
// Call method
WriteDataTable(fileName, dt);
// Pause the process
Thread.Sleep (500);
}
是否有任何建议导出所有DataTable对象而不会减慢进程?
提前谢谢。
答案 0 :(得分:0)
我发现了问题。因为我使用&#34; DateTime.Now&#34; (直到秒)作为文件名,当我在同一秒内导出两个文件时,第一个导出文件被第二个导出文件覆盖。