Быстро проверить, есть ли данная строка в большом списке

  • Автор темы Автор темы alex1sv
  • Дата начала Дата начала

alex1sv

Client
Регистрация
04.02.2014
Сообщения
9
Реакции
0
Баллы
1
Такая ситуация: парсим ID юзеров и складываем в большой файл 1.

НО, есть еще один большой файл 2 - юзеры, которых уже обработали в другом проекте, их в файл 1 класть не нужно.

Есть ли способ проверить, не создавая цикл, присутствует ли текущий юзер в файле 2?

Вот чем-то родственнным, вроде бы, является, "удалить строку из списка по значению", быстро и удобно. Думал его использовать как-то, но не додумался, как это сделать (т.к. эта операция возвращает успех в любом случае, вне зависимости от того, попался ли юзер в списке и был ли действительно удален)


P.S. на данный момент решаем это так: пишем в файл 1 все подряд, а после парсинга берем файл 2 и в цикле построчно удаляем из файла 1 все совпадения. Но это делается долго, а в перспективе будет совсем долго (по мере роста файлов).
 
можно файл 2 поместить в список, объединить строки списка, соответственно положить в переменную и искать в этой переменной вхождение, если вхождение найдено, то соотв. не кладем данные в файл 1..
 
сделайте на сниппете - цикл все равно будет, но шустрый и не заметный))))
В общем id - это id хомяка
Список 2 - список с отработанными хомяками

В данном случае идет проверка нового id во втором списке

Код:
Развернуть Свернуть Копировать
var list = project.Lists["Список 2"];
string id = project.Variables["id"].Value;
foreach(string data in list)
{
if(data.Contains(id))
return true;
}
return false;

А вот этим сниппетом можно будет почистить все что уже напарсилось в 1 список)))

Код:
Развернуть Свернуть Копировать
var list = project.Lists["Список 1"];
var list2 = project.Lists["Список 2"];
for(int i =list1.Count-1;i>=0;i--)
{
foreach(string data in list2)
{
if(list[i].Contains(data))
{
list.RemoveAt(i);
continue;
}
}
}
return 0;

Вроде оба должны работать) будут косячить - пишите)
 
P.S. на данный момент решаем это так: пишем в файл 1 все подряд, а после парсинга берем файл 2 и в цикле построчно удаляем из файла 1 все совпадения. Но это делается долго, а в перспективе будет совсем долго (по мере роста файлов).

Долго это в PM, потому что работа шаблона сопровождается анимацией
В ZP все эти операции выполняются почти мгновенно.
 
  • Спасибо
Реакции: Grek

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