티스토리 뷰
대량의 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";
//필터된 Row를 tiDataset에 저장
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 실행
}