Удаление дублей сверху

Sorrow

Пользователь
Регистрация
02.01.2019
Сообщения
36
Благодарностей
2
Баллы
8
Доброго времени суток!
Столкнулся с проблемой.
Необходимо удалить дубли в списке, но не так как это делает стандартный кубик, который удаляет повторную строку снизу списка, а удалить повторную строку сверху списка.
Подскажите, как это сделать?
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 412
Баллы
113
первое, что приходит на ум, так это перевернуть список, удалить дубли и потом перевернуть список обратно.
берем по строке из списка1 с удалением и складываем в список 2 в начало => удаляем дубли в списке 2 => берем по строке из списка 2 с удалением и добавляем в список 1 в начало.
 
  • Спасибо
Реакции: TwistDanceR

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 698
Баллы
113
Доброго времени суток!
Столкнулся с проблемой.
Необходимо удалить дубли в списке, но не так как это делает стандартный кубик, который удаляет повторную строку снизу списка, а удалить повторную строку сверху списка.
Подскажите, как это сделать?
раз дубли не такие уж и дубли, а верхний дубель важнее того что ниже, значит есть еще параметры по которым идет оценка важности дублей.
вот по этому параметру и нужно сначала сделать сортировку списка, потом удалить дубли, и сделать обратную сортировку.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 170
Благодарностей
2 172
Баллы
113
Вот пример рабочий для таблицы с куками для удаления дублей сверху в первом столбце. можете просто наполнить таблицу одним столбцом, тогда получится как бы список:
C#:
IZennoTable Table_Cookies = project.Tables["Table_Cookies"]; // получаем таблицу под названием "Table_Cookies" из вашего проекта (создайте если нет)
// Ниже с помощью промежуточного списка "List_Temp_2" мы удаляем куки-дубли из таблицы, оставляя при этом имеено последнее значение.
// П.С. Обычный кубик "Таблица > Удалить дубли" оставляет первое (старое значение), так что он нам здесь не подойдет.
List<string> List_Temp_2 = new List<string>();
for(int i=Table_Cookies.RowCount-1; i>=0; i--){
    var s = Table_Cookies.GetCell(0, i); // берем в обработку первый столбец только (№=0)
    if (List_Temp_2.Contains(s))
    {
        Table_Cookies.DeleteRow(i);
    }
    else
    {
        List_Temp_2.Add(s);
    }
}
было:
Код:
1
2
3
4
1
1
1
2
станет:
Код:
3
4
1
2
 
  • Спасибо
Реакции: Alexmd

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)