Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar Jadual Data dengan Cekap kepada Fail CSV dalam C#?

Bagaimanakah Saya Boleh Menukar Jadual Data dengan Cekap kepada Fail CSV dalam C#?

Linda Hamilton
Linda Hamiltonasal
2025-01-15 15:52:44715semak imbas

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

C# DataTable to CSV Conversion: Teknik yang Diperbaiki dan Nyahpepijat

Menukar Jadual Data kepada fail CSV memerlukan perhatian yang teliti terhadap pengasingan data. Jika data anda kelihatan berkelompok dalam sel pertama setiap baris, masalah mungkin berpunca daripada pengendalian pembatas dan pemisah baris yang salah.

Kod asal, menggunakan StringBuilder, mungkin mempunyai kecacatan dalam logik penambahan nilai barisnya. Isunya berkemungkinan peletakan koma—ia ditambahkan selepas setiap nilai, bukan hanya selepas nilai terakhir dalam setiap baris.

Berikut ialah versi kod yang diperhalusi untuk menangani perkara ini:

<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>

Sebagai alternatif, pendekatan yang lebih cekap dan elegan menggunakan LINQ (tersedia dalam .NET 4.0 dan lebih baru) ditunjukkan di bawah:

<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>

Penyelesaian berasaskan LINQ ini memperkemas lelaran lajur dan baris, menggunakan string.Join untuk sisipan pembatas ringkas. Kaedah ini biasanya lebih disukai kerana kebolehbacaan dan kecekapannya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Jadual Data dengan Cekap kepada Fail CSV dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn