Heim >Backend-Entwicklung >C++ >Wie kann ich eine Datentabelle in C# effizient in eine CSV-Datei konvertieren?

Wie kann ich eine Datentabelle in C# effizient in eine CSV-Datei konvertieren?

Linda Hamilton
Linda HamiltonOriginal
2025-01-15 15:52:44715Durchsuche

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

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn