首頁 >後端開發 >C++ >如何在 C# 中有效率地將 DataTable 轉換為 CSV 檔案?

如何在 C# 中有效率地將 DataTable 轉換為 CSV 檔案?

Linda Hamilton
Linda Hamilton原創
2025-01-15 15:52:44714瀏覽

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