asp.net with c#

DataTable 중복된 값 제거

damian 2012. 1. 10. 10:29

※ DataTable에 존재하는 Data중 중복된 값 제거하기
 
 #region Row, Row를 비교한다.
 public static bool RowEqual(object[] Values, object[] OtherValues)
 {
     if (Values == null) return false;
 
    for (int i = 0; i < Values.Length; i++)
     {
         if (!Values[i].Equals(OtherValues[i])) return false;
     }
     return true;
 }
 #endregion
 
#region 데이터테이블을 distinct한다.
 public static DataTable Distinct(DataTable Table, DataColumn[] Columns)
 {
     DataTable dt = null;
     string sort = string.Empty;
 
    try
     {
         if (Table != null)
 
        {
             dt = new DataTable("Distinct");
 
            for (int i = 0; i < Columns.Length; i++)
             {
                 dt.Columns.Add(Columns[i].ColumnName, Columns[i].DataType);
                 sort += Columns[i].ColumnName + ",";
             }
 

            object[] currentrow = null;
             object[] previousrow = null;
             DataRow[] sortedrows = Table.Select(string.Empty, sort.Substring(0, sort.Length - 1));
 
            dt.BeginLoadData();
             foreach (DataRow row in sortedrows)
             {
                 currentrow = new object[Columns.Length];
                 for (int i = 0; i < Columns.Length; i++)
                 {
                     currentrow[i] = row[Columns[i].ColumnName];
                 }
 
                if (!RowEqual(previousrow, currentrow))
                 {
                     dt.LoadDataRow(currentrow, true);
                 }
 
                previousrow = new object[Columns.Length];
                 for (int i = 0; i < Columns.Length; i++)
                 {
                     previousrow[i] = row[Columns[i].ColumnName];
                 }
             }
             dt.EndLoadData();
         }
     }
     catch (Exception ex) // 프로그램에서 예상하지 못한 Exception을 처리합니다.
     {
         throw ex;
     }
     finally // 더 이상 사용하지 않는 자원을 해제합니다.
     {
     }
     return dt;
 }

'asp.net with c#' 카테고리의 다른 글

c# 연산자  (0) 2012.02.01
DataTable에 PrimaryKey 설정  (0) 2012.01.10
DataTable Merge  (0) 2012.01.10
DataTable 가로 세로 변환  (0) 2012.01.10
컨트롤 캡쳐  (0) 2012.01.10