首页 >后端开发 >C++ >如何在 C# 中高效地将 DataTable 转换为 CSV 文件?

如何在 C# 中高效地将 DataTable 转换为 CSV 文件?

Linda Hamilton
Linda Hamilton原创
2025-01-15 15:52:44715浏览

How Can I Efficiently Convert a DataTable to a CSV File in C#?

C# 数据表到 CSV 的转换:改进的技术和调试

将 DataTable 转换为 CSV 文件需要仔细注意数据分离。 如果您的数据聚集在每行的第一个单元格中,则问题可能源于不正确的分隔符和换行符处理。

使用 StringBuilder 的原始代码的行值附加逻辑可能存在缺陷。 问题可能是逗号位置 - 它添加在 每个 值之后,而不是仅添加在每行的最后一个值之后。

这是解决此问题的代码的改进版本:

<code class="language-csharp">StringBuilder sb = new StringBuilder();

foreach (DataRow row in dt.Rows)
{
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        sb.Append(row[i].ToString());
        if (i < dt.Columns.Count - 1)
        {
            sb.Append(","); // Add comma only before the last column
        }
    }
    sb.AppendLine(); // Add line break after each row
}

File.WriteAllText("test.csv", sb.ToString());</code>

或者,使用 LINQ(在 .NET 4.0 及更高版本中可用)的更高效、更优雅的方法如下所示:

<code class="language-csharp">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("test.csv", sb.ToString());</code>

这个基于 LINQ 的解决方案简化了列和行迭代,采用 string.Join 进行简洁的分隔符插入。 由于其可读性和效率,这种方法通常是首选。

以上是如何在 C# 中高效地将 DataTable 转换为 CSV 文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn