그러냐

합계구한 컬럼을 DataTable에 추가하기 본문

c#

합계구한 컬럼을 DataTable에 추가하기

관절분리 2016. 1. 27. 18:37
반응형

출처 Vista and Beyond | 까치
원문 http://blog.naver.com/tothesky21/40016626975

public System.Data.DataTable GetTable(System.Data.SqlClient.SqlDataReader _reader)
  {
   System.Data.DataTable _table = _reader.GetSchemaTable();
   System.Data.DataTable _dt = new System.Data.DataTable();
   System.Data.DataColumn _dc;
   System.Data.DataRow _row;
   System.Collections.ArrayList _al = new System.Collections.ArrayList();

   for (int i = 0; i < _table.Rows.Count; i ++)
   {
    _dc = new System.Data.DataColumn();

    if (! _dt.Columns.Contains(_table.Rows[i]["ColumnName"].ToString()))
    {
     _dc.ColumnName = _table.Rows[i]["ColumnName"].ToString();
     _dc.Unique = Convert.ToBoolean(_table.Rows[i]["IsUnique"]);
     _dc.AllowDBNull = Convert.ToBoolean(_table.Rows[i]["AllowDBNull"]);
     _dc.ReadOnly = Convert.ToBoolean(_table.Rows[i]["IsReadOnly"]);
     _al.Add(_dc.ColumnName);
     _dt.Columns.Add(_dc);
    }
   }
   _dc = new System.Data.DataColumn();
   _dc.ColumnName = "합계";
   _dc.DataType = Type.GetType("System.String");
   _dt.Columns.Add(_dc);

   while (_reader.Read())
   {
    _row = _dt.NewRow();

    int i = 0;
    int sum = 0;
    for ( i = 0; i < _al.Count; i++)
    {
     _row[((System.String) _al[i])] = _reader[(System.String) _al[i]];
     string tmpSum = _reader[(System.String) _al[i]].ToString();
     if (i > 2)
     {
      sum += int.Parse(tmpSum);
     }
    }
    _row["합계"] = sum.ToString();
    _dt.Rows.Add(_row);
   }
   return _dt;
  }

반응형

'c#' 카테고리의 다른 글

동적 배열  (0) 2016.01.27
[WCF]데이터 보내기1  (0) 2016.01.27
C#에서의 IO [3/3]  (0) 2016.01.27
C#에서의 IO [2/3]  (0) 2016.01.27
ArrayList 파일 IO  (0) 2016.01.27