본문 바로가기
C#

C# - DataTable 사용법(2) - Clone, ImportRow, Select, Copy, Reset, Clear, Compute

by 개발 그리고 게발 2021. 7. 23.
728x90

DataTable에 존재하는 다양한 함수로 DataTable을 제어할 수 있으며 다음과 같은 함수가 있습니다.

 

DataTable Example

DataTable data = new DataTable();

data.Columns.Add("no", typeof(int));
data.Columns.Add("name", typeof(string));
data.Columns.Add("date", typeof(DateTime));
data.Columns.Add("food", typeof(string));
data.Rows.Add(new object[] { 1, "Mike", DateTime.Now.AddDays(1) });
data.Rows.Add(new object[] { 2, "Jane", DateTime.Now.AddDays(2) });

 

 

Clone

DataTable의 DataRow를 제외한 컬럼 및 다른 모든 정보들을 그대로 복사합니다.

DataTable new_data = data.Clone();

 

결과

no name date food
       

 

 

 

ImportRow

다른 DataTable의 Row를 그대로 가져옵니다.

DataTable new_data = data.Clone();
data2.ImportRow(data.Rows[1]);

 

결과

no name date food
2 Jane 2021-07-25 오후 3:10:56  

 

 

Select

조건에 맞는 특정 DataRow만 선택합니다. DataRow를 배열로 받습니다.

DataRow[] dataRows = data.Select("no = 1");

 

결과

no name date food
1 Mike 2021-07-25 오후 3:10:56  

 

 

Copy

다른 DataTable에 똑같이 기존의 DataTable을 복사합니다.

DataTable new_data = data.Copy();

 

결과(new_data)

no name date food
1 Mike 2021-07-24 오후 3:10:56  
2 Jane 2021-07-25 오후 3:10:56  

 

 

 

Reset

DataTable을 초기화 시킵니다. new DataTable로 다시 선언하는것과 같은 효과가 있습니다.

data.Reset();

 

 

Clear

DataTable의 데이터를 모두 지웁니다. DataRow들만 지웁니다.

data.Clear();

 

 

Compute

연산을 수행할 수 있는 메소드 입니다. DataTable에서 sum, count, 부등호 등의 연산을 수행하려고 할 경우 사용할 수 있습니다.

 

Compute 메소드로 가능한 연산의 종류로는 아래의 msdn을 참고바랍니다.

https://docs.microsoft.com/ko-kr/dotnet/api/system.data.datacolumn.expression?view=net-5.0

 

DataColumn.Expression 속성 (System.Data)

행을 필터링하거나 열의 값을 계산하거나 집계 열을 만드는 데 사용되는 식을 가져오거나 설정합니다.Gets or sets the expression used to filter rows, calculate the values in a column, or create an aggregate column.

docs.microsoft.com

DataTable data = new DataTable();

data.Columns.Add("no", typeof(int));
data.Columns.Add("name", typeof(string));
data.Columns.Add("date", typeof(DateTime));
data.Columns.Add("food", typeof(string));
data.Rows.Add(new object[] { 1, "Mike", DateTime.Now.AddDays(1), "Steak" });
data.Rows.Add(new object[] { 2, "Jane", DateTime.Now.AddDays(2), "Steak" });
data.Rows.Add(new object[] { 3, "Jane", DateTime.Now.AddDays(2), "Steak" });
data.Rows.Add(new object[] { 4, "Tony", DateTime.Now.AddDays(2), "Coke" });
data.Rows.Add(new object[] { 5, "Han", DateTime.Now.AddDays(2), "Coke" });

// 결과값 : 6
object sum = data.Compute("sum(no)", "food = 'Steak'");

// 결과값 : 1
object count1 = data.Compute("count(no)", "name = 'Tony'");

// 결과값 : 4
object count2 = data.Compute("count(no)", "no < 5");

// 결과값 : 3
object avg = data.Compute("avg(no)", "");

 

 

 

MSDN Reference : https://docs.microsoft.com/ko-kr/dotnet/api/system.data.datatable?view=net-5.0

 

DataTable 클래스 (System.Data)

메모리 내 데이터의 한 테이블을 나타냅니다.Represents one table of in-memory data.

docs.microsoft.com

 

728x90

댓글