РЕДАКТИРОВАТЬ: Решил это сам - очевидно, не будет работать, так как сортировка dataTable не сортирует базовые данные - создал DataView из таблицы, работает нормально.
У меня есть таблица данных, которую я сортирую, а затем перебираю, чтобы удалить повторяющиеся значения в одном столбце, однако выходные данные не соответствуют ожидаемым.
Структура данных:
infoRow["Title"]
infoRow["QuickLink"]
infoRow["Description"]
infoRow["Date"]
infoRow["MonthName"]
Я сортирую вот так, все работает нормально и выдает таблицу, упорядоченную в порядке возрастания месяца:
dataTable = dataTable.DefaultView.ToTable(true);
dataTable.DefaultView.Sort = "Date asc";
После сортировки я использую приведенный ниже код для сравнения каждой строки с предыдущей, и если значение MonthName совпадает, замените его пустой строкой:
string prevMonthName = "";
foreach (DataRow row in dtEvents.Rows)
{
string strMonthName = row["MonthName"].ToString();
if (strMonthName == prevMonthName)
{
row["MonthName"] = "";
row.AcceptChanges();
}
prevMonthName = strMonthName;
}
Итак, проблема, с которой я столкнулся, заключается в том, что даже когда я запускаю цикл MonthName после сортировки, он работает с несортированными данными. Это как DefaultView.Sort влияет только на визуализированный вывод без физического переупорядочения таблицы, поэтому вторая часть кода не дает нужного мне результата. Должен ли я использовать DataView или я просто не в курсе ...