티스토리 뷰

Development/C#

DataSet 대량의 Rowfilter 적용 루프문

알 수 없는 사용자 2008. 6. 13. 13:10
반응형

 

   대량의 Filter를 수행할 때 시간을 단축시키는 루프문   


*DataSet
DefaultView는 실제 Row의 참조점을 가지고 있으므로 DefaultView의 값을 삭제 하여도 실제 Row는 삭제 되지 않는다.

 

             //filter결과를 담을 dataTable

DataTable tiDataset = null;

           // queryList는 쿼리문을 저장하고 있는 string컬렉션(List) 

            for (int i = 0; i < queryList.Count; i++)

            {

                // _dataset 변수는 filter할 데이터가 담겨있는 DataSet

_dataset.Tables[0].DefaultView.RowFilter = queryList[i];

                           //필터의 결과를 dtable에 복사한다.

                DataTable dtable = _dataset.Tables[0].DefaultView.ToTable();

                           //최종으로 필터결과를 담을 DataTable에 테이블의 구조를 복제한다.

                if (tiDataset == null)

                    tiDataset = dtable.Clone();

               

                tiDataset.TableName = "tb_test";

                //필터된 RowtiDataset에 저장

                foreach (DataRow row in dtable.Rows)

                {

                    tiDataset.Rows.Add(row.ItemArray);

                }

                           //필터가 완료되어 다시 필터 할 필요가 없는 데이터를 Dataview에서

//삭제한다.

                for (int j = 0; j < _dataset.Tables[0].DefaultView.Count; j++)

                {

                  _dataset.Tables[0].DefaultView.Delete(0);

                }

             //다음 filter 실행

            }

          

 

반응형
댓글