【发布时间】:2015-04-14 17:18:57
【问题描述】:
我正在使用 DataTable,我需要将它们转换为 CSV 文件格式。我正在使用的大多数表都有超过 50,000 条记录,因此我试图尽量减少转换它们所需的时间。
这是我目前的方法:
public static string table_to_csv(DataTable table)
{
string file = "";
foreach (DataColumn col in table.Columns)
file = string.Concat(file, col.ColumnName, ",");
file = file.Remove(file.LastIndexOf(','), 1);
file = string.Concat(file, "\r\n");
foreach (DataRow row in table.Rows)
{
foreach (object item in row.ItemArray)
file = string.Concat(file, item.ToString(), ",");
file = file.Remove(file.LastIndexOf(','), 1);
file = string.Concat(file, "\r\n");
}
return file;
}
有什么办法可以提高这种方法的效率吗?欢迎您提出任何修改和想法!
【问题讨论】:
-
由于您的代码正在运行并且您没有遇到问题,也许Code Review 比 StackOverflow 更适合您提出问题。
-
你为什么要加载这么多行?使用数据库的工具(如 SQL Server 中的 SSIS)将数据导出到 CSV 会更容易。或者使用 DataReader 在 firehose 模式下读取数据并将它们写入文件。在内存中创建整个字符串也不是高效 - 使用 Write 和 WriteLine 将它们写出到文件中。此外,您可以使用 String.Join 替换重复的连接,尽管使用
Write也会使其有点多余 -
我认为这些答案不太适合 CodeReview,我认为这不是题外话。
trying to minimize the time it takes to convert them对我来说听起来像是一个问题陈述,这可能只是这里的主题。迁移将被拒绝
标签: c# performance csv datatable