Convertir efficacement des DataTables en CSV en C#
Cet article présente une méthode robuste pour convertir des objets DataTable C# en fichiers CSV (valeurs séparées par des virgules). La méthode originale présentait des problèmes de séparation correcte des données ; cette solution apporte une approche corrigée et améliorée.
Voici le code optimisé :
<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() ?? ""); //Handle null values sb.AppendLine(string.Join(",", fields)); } File.WriteAllText("test.csv", sb.ToString());</code>
Ce code résout le problème d'origine en séparant correctement les données en cellules individuelles dans le fichier CSV. Il exploite les méthodes Select
et string.Join
de LINQ pour créer efficacement la chaîne délimitée par des virgules pour les en-têtes de colonnes et les lignes de données. L'utilisation de File.WriteAllText
garantit que les données CSV sont écrites dans le fichier spécifié. L'ajout de field?.ToString() ?? ""
gère les valeurs nulles potentielles avec élégance.
D'autres améliorations, telles que l'échappement des guillemets pour les caractères spéciaux ou les techniques d'optimisation de la mémoire, peuvent être intégrées en fonction des besoins spécifiques de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!