C# & ASP.NET

C# DataTable 그룹핑 하기 - 프로그램에서 DataTable 를 group by 하기

조심이 2010. 12. 6. 16:18
반응형

DB에서 쿼리로 Group By 절로 그룹핑을 하면 편하련만..
어쩔 수 없이 DataTable 자체로 그룹핑을 할 일이 생겼다.

private void SetGrid()
{
    //DT 라는 데이터 테이블이 존재한다고 가정..
    DataTable DT = new DataTable();
    DT = 값 넣기...
    
   DataTable groupByTable = DT.Clone();  // 그룹핑될 DataTable 을 정의하고 구조를 원본 DataTable 스키마 복사
   dataTableGroupBy(DT, ref groupByTable);

   // groupByTable 그룹핑된 데이터 테이블
}

       
public void dataTableGroupBy(DataTable oriData, ref DataTable copyData)
        {
            DataRow[] drSelect = null;

            DataRow[] comSelect = null;


            string filter = string.Empty;
            string order = string.Empty;

            try
            {
                int oriCnt = oriData.Rows.Count;
                DataView dv = oriData.DefaultView;
                dv.Sort = order;

                DataTable dt = dv.ToTable();

                for (int i = 0; i < oriCnt; i++)
                {
                    //예를 들어 이름필드로 그룹핑을 한다고 치면
                    filter = string.Format("NAME='{0}'", dt.Rows[i]["NAME"]);

                    drSelect = dt.Select(filter);


                    if (drSelect.Length > 0)
                    {
                        comSelect = copyData.Select(filter);
                        if (comSelect.Length <= 0)
                        {
                            copyData.ImportRow(drSelect[0]);
                        }
                    }
                }
            }
            catch (Exception err)
            {
            }
        }

반응형