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
Lepaskan: 2025-01-15 15:52:44
asal
714 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan