C# DataTable을 CSV로 변환: 향상된 기술 및 디버깅
DataTable을 CSV 파일로 변환하려면 데이터 분리에 세심한 주의가 필요합니다. 데이터가 각 행의 첫 번째 셀에 클러스터되어 나타나는 경우 잘못된 구분 기호 및 줄 바꿈 처리로 인해 문제가 발생할 가능성이 높습니다.
StringBuilder
을 사용하는 원본 코드의 행 값 추가 논리에 결함이 있을 수 있습니다. 문제는 쉼표 배치일 가능성이 높습니다. 각 행의 마지막 값 바로 뒤가 아니라 모든 값 뒤에 추가됩니다.
이 문제를 해결하기 위한 개선된 코드 버전은 다음과 같습니다.
<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>
또는 LINQ(.NET 4.0 이상에서 사용 가능)를 사용하는 보다 효율적이고 우아한 접근 방식은 다음과 같습니다.
<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>
이 LINQ 기반 솔루션은 간결한 구분 기호 삽입을 위해 string.Join
를 사용하여 열과 행 반복을 간소화합니다. 이 방법은 일반적으로 가독성과 효율성 때문에 선호됩니다.
위 내용은 C#에서 DataTable을 CSV 파일로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!