С# сравнение 2х списков с последующим удалением

Remart

Client
Регистрация
06.10.2016
Сообщения
52
Благодарностей
10
Баллы
8
Есть 2 списка урлов. Задача простая - взять 1 урл из списка 1, пробежаться по списку 2 и удалить в нем строки = урл 1, потом взять 2 урл из списка 1 и т.д.

Вчера день потратил.
1. Если делать через операции над списками, взять 1 строку с удалением, положить в переменную, отправить на удаление всех строк в списке 2 по значению переменной, зациклить на 1 действие и так, пока список 1 не опустеет. - сейчас работает так, думал как ускорить.
2. Реализовал взять 1 строку с удалением, положить в переменную, но дальше отправить на удаление всех строк в списке 2 по значению реализовал на С#
- итог работает значительно медленее.
3. Целый день убил на реализацию обоих операций в С#. Нашел вот такой код. И даже он работал, НО обрезал он строки во 2 списке не по значению, а все строки до значения. Или я так понял оператор Contains режет не по точному соответствию, а по совпадению, т.е. "page1/lsadkfj" будет отрезан если сравниваться будет по "page1/ls", а это не нужно.

Други, кто шарит, подможите с С#

C#:
var list = project.Lists["List"];
string text = "Текст"; // тут пробовал вставить не переменную, а список 2 и дальше в цикле пытался обрезать по совпадению, но не получилось
lock (SyncObjects.ListSyncer)
{
    for (int i = 0; i < list.Count; i++)
    {
        string str = list[i];
        if (str.Contains(text))
        {
            list.RemoveAt(i);
            i--;
        }
    }
}
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 075
Благодарностей
8 960
Баллы
113
  • Спасибо
Реакции: Remart

Remart

Client
Регистрация
06.10.2016
Сообщения
52
Благодарностей
10
Баллы
8
@Remart Попробуйте такой вариант, работает оч. быстро.
Докладываю. Сначала просто отказывался работать, потом просто заработал, я хз как это получилось.
Если объемы строчек обработки списков до 1000, +- ручной вариант списками и С# идут одинаково. НО при списке уже в 2,5К строк, c# опередил на 15%, а так как у меня местами списки идут около 30 тыс., то уверен нелинейно будет расти скорость. Благодарочка.

PS. Проржался и проорался от комментариев кода .. сначала переменная костыль, потом коммент с неведомой но важной индуской строчкой ))))))). Разработка - это целый мир :-).
 
  • Спасибо
Реакции: Sergodjan

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 075
Благодарностей
8 960
Баллы
113
НО при списке уже в 2,5К строк, c# опередил на 15%, а так как у меня местами списки идут около 30 тыс., то уверен нелинейно будет расти скорость.
Я обрабатывал списки по 1,5 млн. строк этим кодом, работало почти мгновенно.
 

Remart

Client
Регистрация
06.10.2016
Сообщения
52
Благодарностей
10
Баллы
8
Я обрабатывал списки по 1,5 млн. строк этим кодом, работало почти мгновенно.
Ну я говорю про общее время работы конкретно моего проекта, где эта обработка лишь небольшая часть + наверное раляет длинна строк списков. В моем случае - это урлы, а если бы были короткие имена или id, конечно бы шло все быстрее. В любом случае, благодарочка :az:
 
  • Спасибо
Реакции: Sergodjan

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