Heim >Backend-Entwicklung >C++ >Wie kann ich eine Datentabelle in C# effizient in eine CSV-Datei konvertieren?
C# DataTable-zu-CSV-Konvertierung: Verbesserte Techniken und Debugging
Bei der Konvertierung einer DataTable in eine CSV-Datei muss sorgfältig auf die Datentrennung geachtet werden. Wenn Ihre Daten in der ersten Zelle jeder Zeile geclustert erscheinen, ist das Problem wahrscheinlich auf eine falsche Handhabung von Trennzeichen und Zeilenumbrüchen zurückzuführen.
Der ursprüngliche Code, der ein StringBuilder
verwendet, weist möglicherweise einen Fehler in der Logik zum Anhängen von Zeilenwerten auf. Das Problem ist wahrscheinlich die Platzierung des Kommas – es wird nach jedem Wert hinzugefügt, nicht nur nach dem letzten Wert in jeder Zeile.
Hier ist eine verfeinerte Version des Codes, um dieses Problem zu beheben:
<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>
Alternativ wird unten ein effizienterer und eleganterer Ansatz mit LINQ (verfügbar in .NET 4.0 und höher) gezeigt:
<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>
Diese LINQ-basierte Lösung optimiert die Spalten- und Zeileniteration und verwendet string.Join
für die präzise Einfügung von Trennzeichen. Diese Methode wird im Allgemeinen aufgrund ihrer Lesbarkeit und Effizienz bevorzugt.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Datentabelle in C# effizient in eine CSV-Datei konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!