Тысяча первый вопрос - Сравнение списков на c#

sergeyt

Client
Регистрация
18.10.2010
Сообщения
29
Благодарностей
4
Баллы
8
Есть код, написанный кем то из авторов сего многоуважаемого форума:

Код:
var baseEmails = project.Lists["new_base"];
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);
  }
}
}
Подскажите пожалуйста, как переписать его таким образом чтобы сравнивалось не просто точное выражение, а regex ..а то в случае поиска значения в списке new_base .. учитывается точный регистр из списка blacklist, а у меня в new_base это значение может быть в разных регистрах(

пробовал сам, но получалась какая то фигня .. ошибки насчет преобразования sting в regex.. единственное что смог это насильно сравнивать ToUpper дополнительным блоком.. чтобы удалялись ещё и слова указанные в верхнем регистре. На Форуме прочитал с сотни две постов, к сожалению моего случая на нашел( а то что было примерным - не заработало(

так же пробовал удаление из списка стандартным блоком, к сожалению видимо у меня список исключений не малый и new_base так же под 100-200 метров, что, стандартными средствами конца работы блока я не видел.. c# с кодом выше хотя бы отрабатывает, в отличии от блока.

Заранее благодарен!
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 366
Благодарностей
3 292
Баллы
113
Не тестил, но если так?
Код:
...
string check = baseEmails[i].ToUpper();
if(check.Contains(s.ToUpper())){
   baseEmails.RemoveAt(i);
}
...
И в данном случае, зачем regex?
 

sergeyt

Client
Регистрация
18.10.2010
Сообщения
29
Благодарностей
4
Баллы
8
Не тестил, но если так?
Код:
...
string check = baseEmails[i].ToUpper();
if(check.Contains(s.ToUpper())){
   baseEmails.RemoveAt(i);
}
...
И в данном случае, зачем regex?
да, у меня такая же реализация чтобы удалялось все что с большой буквы, к примеру в списке blacklist у меня есть:

"анатолий"

в списке new_base есть:

"анатолий
Анатолий
АНАТОЛИЙ
АнАтолиЙ"

в случае отработки моего скрипта у меня как я понимаю останутся:

"Анатолий
АНАТОЛИЙ
АнАтолиЙ"

в вашем случае у меня ещё и удалится АНАТОЛИЙ

а мне нужно чтобы удалились все анатолии))
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 366
Благодарностей
3 292
Баллы
113
как я понимаю останутся:

"Анатолий
АНАТОЛИЙ
АнАтолиЙ"
Не должны, так как по очереди, в обоих списках, перед сравнением приводятся к верхнему регистру.
Отличие же только в регистре.
 

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