Проверить, содержатся ли символы из списка 1 в списке 2, если да, то удалить их из списка 2

ikibostus

Client
Регистрация
27.09.2015
Сообщения
252
Благодарностей
26
Баллы
28
Привет, друзья! Есть код, который проверяет, если есть в списке 2 строки, которые равняются строкам из списка 1, то он удаляет эти строки в списке 2. Вопрос, как можно сделать так, что бы код проверял не полное соответствие строк, а частичное содержание символов в этих строках и если символы из списка 1 содержаться в строках из списка 2, то удалить полностью эти строки из списка 2.
Код:
//Списки проекта
var baseEmails = project.Lists["baseEmails"];
var blackList = project.Lists["blackList"];
// проверяем каждую строку

//Лочим для многопотока
lock(SyncObjects.ListSyncer)
{

    foreach(string s in blackList)
{
  //Ищем в основном списке
  for(int i = 0; i < baseEmails.Count; i++)
  {
   //Если нашли, удаляем
   if(baseEmails.ElementAt(i) == s)
    baseEmails.RemoveAt(i);  
  }
}
}
 
Последнее редактирование:

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
Объедините содержимое первого списка через | потом Операции над списком - Удалить строки, соответствующие регулярному выражению и там укажите свою переменную. Всё.

Если кодом, то можно как то так:

Код:
//Списки проекта
var baseEmails = project.Lists["baseEmails"];
var blackList = project.Lists["blackList"];
// проверяем каждую строку
//Лочим для многопотока
lock(SyncObjects.ListSyncer)
{
    foreach(string s in blackList)
{
  //Ищем в основном списке
  for(int i = 0; i < baseEmails.Count; i++)
  {
   //Если нашли, удаляем
    string check = baseEmails[i];
   if(check.Contains(s))
    baseEmails.RemoveAt(i); 
  }
}
}
 
  • Спасибо
Реакции: ikibostus и Sanekk

ZSHab

Client
Регистрация
29.10.2014
Сообщения
220
Благодарностей
22
Баллы
18
Объедините содержимое первого списка через | потом Операции над списком - Удалить строки, соответствующие регулярному выражению и там укажите свою переменную. Всё.

Если кодом, то можно как то так:

Код:
//Списки проекта
var baseEmails = project.Lists["baseEmails"];
var blackList = project.Lists["blackList"];
// проверяем каждую строку
//Лочим для многопотока
lock(SyncObjects.ListSyncer)
{
    foreach(string s in blackList)
{
  //Ищем в основном списке
  for(int i = 0; i < baseEmails.Count; i++)
  {
   //Если нашли, удаляем
    string check = baseEmails[i];
   if(check.Contains(s))
    baseEmails.RemoveAt(i);
  }
}
}
Столкнулся с следующей проблемой, список 1:
1
2
3
Список 2:
1
2
3
4
123

Если удалять данными способами, то удаляется строка 123, как сделать, что по полному вхождению удаляло?
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113
Столкнулся с следующей проблемой, список 1:
1
2
3
Список 2:
1
2
3
4
123

Если удалять данными способами, то удаляется строка 123, как сделать, что по полному вхождению удаляло?

заменить строку
if(check.Contains(s))

на
if(check==s)
 
  • Спасибо
Реакции: ZSHab

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