>백엔드 개발 >C++ >C#에서 DataTable을 CSV 파일로 효율적으로 변환하려면 어떻게 해야 합니까?

C#에서 DataTable을 CSV 파일로 효율적으로 변환하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-15 15:52:44715검색

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.