Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menukar Jadual Data dengan Cekap kepada Fail CSV dalam 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!