본문 바로가기
C#

C# DataTable 특정 컬럼 제거하기

by Sudarii 2025. 4. 9.
728x90

🔍 C #에서 DataTable에서 특정 컬럼 제거하는 방법

DataTable은 C#에서 데이터를 표 형식으로 다룰 수 있게 해주는 매우 유용한 클래스입니다. 종종 DataTable을 다루다 보면, 특정 컬럼(열)을 제거해야 할 일이 생기는데요. 이번 포스팅에서는 DataTable에서 특정 컬럼을 제거하는 방법을 쉽게 정리해보겠습니다.

 

📌 기본 예제

가장 간단하게 컬럼 하나를 제거하는 방법은 Columns.Remove() 메서드를 사용하는 것입니다.

// DataTable 예제
var dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Age");

// "Age" 컬럼 제거
if (dt.Columns.Contains("Age"))
{
    dt.Columns.Remove("Age");
}

 

 

💡 Columns.Contains("컬럼명")을 사용하면 컬럼이 존재하는지 먼저 체크할 수 있어서 오류를 방지할 수 있어요!

 

 

🔄 여러 컬럼 제거하기

여러 개의 컬럼을 한 번에 제거하고 싶을 때는 컬럼명을 리스트로 모아서 반복문으로 처리할 수 있습니다.

 

var columnsToRemove = new List<string> { "ID", "Age" };

foreach (var colName in columnsToRemove)
{
    if (dt.Columns.Contains(colName))
    {
        dt.Columns.Remove(colName);
    }
}

 

 

🔢 인덱스로 컬럼 제거하기

컬럼명을 모를 경우에는 인덱스를 통해 제거할 수도 있습니다.

// 첫 번째 컬럼 제거
dt.Columns.RemoveAt(0);

 

 

⚠ 주의: 컬럼 인덱스는 0부터 시작합니다. 그리고 컬럼을 제거하면 인덱스가 다시 정렬되기 때문에, 루프에서 인덱스로 제거할 땐 조심해야 해요.

 

⚠ 컬렉션 변경 주의사항

컬럼을 루프 중에 제거하려고 하면 Collection was modified 예외가 발생할 수 있습니다. 이런 경우엔 아래처럼 제거할 컬럼명을 미리 따로 저장해두고, 그 후에 제거하는 방식이 안전합니다.

 

// 제거할 컬럼 목록을 미리 수집
var toRemove = new List<string>();

foreach (DataColumn column in dt.Columns)
{
    if (column.ColumnName.StartsWith("tmp_")) // 예: 임시 컬럼 제거
    {
        toRemove.Add(column.ColumnName);
    }
}

// 실제 제거
foreach (var colName in toRemove)
{
    dt.Columns.Remove(colName);
}

✅ 정리

방법설명
Remove("컬럼명") 컬럼 이름으로 제거
RemoveAt(index) 인덱스로 제거
Contains("컬럼명") 컬럼 존재 여부 체크
루프 전에 제거할 컬럼 목록 확보 예외 방지용 패턴

 

필요한 컬럼만 남기고 깔끔하게 정리된 DataTable로 작업하면, 데이터 처리 속도나 안정성에서도 이득을 볼 수 있습니다. 😊

혹시 DataTable을 JSON으로 변환한다거나, 특정 조건으로 필터링하는 팁도 궁금하시다면 댓글로 알려주세요!

728x90