50,000 개가 넘는 행으로 구성된 .NET 데이터 테이블에서 중복을 제거하려고합니다. 필자의 접근 방식은 간단합니다. 데이터 테이블을 사전 순으로 정렬 한 다음 위의 행과 동일한 행을 찾아 스캔합니다.큰 정렬 된 데이터 테이블 "랩"
내가 겪고있는 문제는 데이터 테이블이 정렬 될 때 주위를 "감싸는"것입니다. 나는 그것을 정렬이 사용
myDataTable.DefaultView.Sort = "name";
내가 디버거를 사용하여 데이터 테이블을 볼 때, 그것과 같이, 덩어리에서 알파벳 순으로 정렬되어
Aardvark
Apple
Banana
...(20,000 rows later)...
Aardvark
Angle
Boat
은 분명히이 중복을 찾기 위해 내 시도 유적. 대형 테이블을 다룰 때 프레임 워크의 일종의 최적화 동작입니까? 여기서 무슨 일이 일어나고있는거야?
솔루션 :
여기여기
myDataTable.DefaultView.Sort = "name";
for (int i =0; i< myDataTable.DefaultView.Table.Rows.Count; i++)
{
var thisRow = myDataTable.DefaultView.Table.Rows[i];
var prevRow = myDataTable.DefaultView.Table.Rows[i-1];
}
내가 일을 했어야 것입니다 .. 내가 무엇을하고 있었는지입니다 : 당신은 정렬하고 여기에
myDataTable.DefaultView.Sort="name";
var myNewDatatable = myDataTable.DefaultView.ToTable();
for (int i =0; i< myNewDatatable.Rows.Count; i++)
{
var thisRow = myNewDatatable.Rows[i];
var prevRow = myNewDatatable.Rows[i-1];
}
데이터 원본이란 무엇입니까? 데이터베이스 인 경우 SQL 문을 사용하여이 작업을 수행 할 수 있습니까? – Yuck
CSV에서로드 된 DataGridView입니다. 나는 테이블을 복제함으로써 중복을 제거 할 수 있다는 것을 발견했다. (그 메소드에 '고유 한'매개 변수가있다.) 그러나 그것은 정말로 느리다. – PseudoTek