Я пытаюсь удалить дубликаты из таблицы данных .NET, состоящей из более чем 50 000 строк.Мой подход прост: я хочу отсортировать данные в алфавитном порядке, а затем просмотреть и найти строки, которые совпадают со строками над ним.
Проблема, с которой я сталкиваюсь, заключается в том, что датируемые данные «оборачиваются», когдаотсортирован.Я использую это для сортировки:
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];
}