현 블로그는 모바일 환경이 아닌 PC환경에 최적화 되어있습니다.

 Mir의 운영환경

 본체

 DeskTop

 O S

 Windows XP Professional Version 2002 Service Pack 2

 Application

 VisualStudio2010

 .Net

 Framework Ver 3.5

DataTable 중복 Row 제거하기(Distinct) 


System.Data.DataTable.DefaultView.ToTable()을 이용하여 중복 Row를 제거해보자.

 

DataTable.DefaultView.ToTable() 메소드는 기본적으로 Table을 Copy하여 리턴해줍니다.

DataTable.Copy()와 다른점은 DataTable이 아닌 DataView를 기준으로 Copy를 해주며

Copy와 동시에 인자값을 어떻게 넣어주냐에 따라 중복 Data제거(Distinct)와 특정 컬럼만 복사를 할수 있습니다.

 

그중 중복 Data제거를 사용할려면 인자값으로 true만 넣어주면 됩니다.

 

주의할점은 ToTable()은 중복 Data를 제거한 DataTable을 리턴값으로 넘겨주기 때문에 리턴값을 받을 변수를 지정해줘야 합니다.

 

- 예제 -

//중복 Data 제거
DataTable = DataTable.DefaultView.ToTable(true);

 

아래 예제 소스는 간단히 Data를 넣고 중복제거시 어떻게 변하는지 확인해보는 소스입니다.

 

 - 기존 Data -

 

- 예제 -

using System.Data;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

            //학생 DataTable 생성
            DataTable dt = Create_Student_DataTable();
            //학생 Data 넣기
            Add_Studint_Row(dt);
            //중복 Data 제거
            dt = dt.DefaultView.ToTable(true);
            //DataGridView에 표시
            dataGridView1.DataSource = dt;
        }

        private DataTable Create_Student_DataTable()
        {
            //DataTable 생성 
            DataTable dt = new DataTable { TableName = "TestTbl" }; 
            //Columns 생성 
            dt.Columns.AddRange(new DataColumn[] { 
            new DataColumn { ColumnName = "Index",      Caption = "학번",     DataType = typeof(int)      } 
          , new DataColumn { ColumnName = "Name",       Caption = "이름",     DataType = typeof(string)   }  
          , new DataColumn { ColumnName = "Sex",        Caption = "성별",     DataType = typeof(string)   }
            });

            return dt;
        }

        private void Add_Studint_Row(DataTable dt)
        {
            dt.Rows.Add(new object[] { 1, "미르", "남" });
            dt.Rows.Add(new object[] { 2, "미리", "여" });
            dt.Rows.Add(new object[] { 1, "미르", "남" });
            dt.Rows.Add(new object[] { 3, "미자", "여" });
            dt.Rows.Add(new object[] { 4, "미르", "여" });
            dt.Rows.Add(new object[] { 5, "미시", "여" });
        }

    }
}

- 중복제거후 Data -

 

 

 


※ 관련글

+ Recent posts