Удаление из списка 1, то что есть в писке 2

Jerard

Client
Регистрация
11.04.2013
Сообщения
506
Благодарностей
225
Баллы
43
В общем есть список 1, из него нужно удалить строки которые есть в списке 2.
Записей много, около 1 млн.
Щас сделано так:

Но этот вариант занимает уж оочень много времени.
Как можно сделать это быстрее?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Это выполнится В постере быстрее
В PM отрисовка экшенов же.
 
Последнее редактирование:

Jerard

Client
Регистрация
11.04.2013
Сообщения
506
Благодарностей
225
Баллы
43
В том то и дело что не выполняется так...
Браузер выключен. Но от файла ушел только 1мб за часа 2 наверно...
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
При работе в ZP?
 

Jerard

Client
Регистрация
11.04.2013
Сообщения
506
Благодарностей
225
Баллы
43

Irbis

Client
Регистрация
02.03.2014
Сообщения
195
Благодарностей
120
Баллы
43
Попробуйте так:
Код:
lock(SyncObjects.ListSyncer)

{

    List<string> list = new List<string>(project.Lists["Список 1"].Except(project.Lists["Список 2"]).ToList());

    project.Lists["Список 1"].Clear();

            foreach (var item in list)

            {

                project.Lists["Список 1"].Add(item);

            } 

}
На 2-х ядерном процессоре по 3 ГГц код выполняется меньше секунды.
В одном списке 1 млн. строк, во втором 500 тыс.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Код поможет, да
 

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
Если это для блэк листов то могу сниппет подкинуть
 

spy686

Новичок
Регистрация
27.08.2013
Сообщения
27
Благодарностей
1
Баллы
3

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 440
Благодарностей
503
Баллы
113
В своё время для такой задачи пользовался вот этим сервисом - http://arcticlab.ru/tools/overlist/ получилось очень быстро и удобно.
 

gluckbahr

Client
Регистрация
05.04.2014
Сообщения
84
Благодарностей
25
Баллы
18
А как можно получить разницу если список из строк среди которых есть дубли, а второй тот же список, но без дублий?
Как можно получить разницу среди них? Снипет оставляет список 1 пустым=(
вот хочется извлечь именно те что дублируются
 

Shining

Client
Регистрация
25.05.2018
Сообщения
36
Благодарностей
0
Баллы
6
Попробуйте так:
Код:
lock(SyncObjects.ListSyncer)

{

    List<string> list = new List<string>(project.Lists["Список 1"].Except(project.Lists["Список 2"]).ToList());

    project.Lists["Список 1"].Clear();

            foreach (var item in list)

            {

                project.Lists["Список 1"].Add(item);

            }

}
На 2-х ядерном процессоре по 3 ГГц код выполняется меньше секунды.
В одном списке 1 млн. строк, во втором 500 тыс.



Это именно то что так долго искал. Спасибо Большое за этот сниппет!
 

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