안녕하세요! C# 독학중인 초급개발자입니다.
지금 하고있는 프로젝트 중 기능 하나가 문제인데
추려낸 데이터(약 3000건)을 for문으로 순회해서 전체 데이터(약 4~50000건)에서 중복내역을 확인하고 있습니다. 하지만 지금 방식으로 비교하니 너무 느려 사용하기 불편하더라구요…
그래서 제가 짠 로직을 간략하게 설명드릴테니 여기서 사용하면 느린 변수나 바뀌면 빠르게 수행시간을 줄일 방법이 있다면 추천해주시면 감사하겠습니다!
<지금 방식>
*DataTable totalDt : 전체데이터, 약 4~5만건
*DataTable comparisonDt : 추려낸 데이터, 약 3천건
`
for(int i = 0; i < comparisonDt.Rows.Count; i++)
{
//데이터 중복추출
DataRow[] duplicateDr1 = totalDt.Select($"col1 = '{comparisonDt .Rows[i]["col1"].ToString()}'");
duplicateDt1 = duplicateDr1.CopyToDataTable();
DataRow[] duplicateDr2 = totalDt.Select($"col2 = '{comparisonDt .Rows[i]["col2"].ToString()}'");
duplicateDt2 = duplicateDr2.CopyToDataTable();
DataRow[] duplicateDr3 = totalDt.Select($"col3 = '{comparisonDt .Rows[i]["col3"].ToString()}'");
duplicateDt3 = duplicateDr3.CopyToDataTable();
DataRow[] duplicateDr4 = totalDt.Select($"col4 = '{comparisonDt .Rows[i]["col4"].ToString()}'");
duplicateDt4 = duplicateDr4.CopyToDataTable();
//추출데이터 -> List
List<DataRow> duplicateList = new List<DataRow>();
for(int j = 0; j < duplicateDt1.Rows.Count; j++)
duplicateList.Add(duplicateDt1.Rows[j];
for(int j = 0; j < duplicateDt2.Rows.Count; j++)
duplicateList.Add(duplicateDt2.Rows[j];
for(int j = 0; j < duplicateDt3.Rows.Count; j++)
duplicateList.Add(duplicateDt3.Rows[j];
for(int j = 0; j < duplicateDt4.Rows.Count; j++)
duplicateList.Add(duplicateDt4.Rows[j];
//List를 순회하며 데이터가공
for(int j = 0; j < duplicateList.Count; j++)
{
//....
}
}
`
이상입니다!