Как модифицировать данный снипет

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
C#:
// берем из переменной текст, который надо искать
var textContains = project.Variables["listSearchTextContains"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["SourceList"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (str.Contains(textContains))
            return "yes";
    }
}
// если ничего не нашли возвращаем "no"
return "no";
Данный снипет берет значение из переменной. А как сделать чтобы значение брал не из переменной а из списка? Причем, в списке будет не одна строка..
 
Последнее редактирование модератором:
  • Спасибо
Реакции: CSS

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Цель какая? Отфильтровать по блеклисту?
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Цель какая? Отфильтровать по блеклисту?
Есть список, в котором есть ключевые слова. Берем по одному ключевику из списка и сравниваем со вторым списком, затем второй ключевик прогоняем по тому самому второму списку и.т.д., пока не попадется первый попавшийся ключ из списка1, после чего делаем break (выход), yes или no если не один ключ не совпал :-) или наоборот.

Кто поможет с решением?

Фуу... че-то там наковырял и заработало без всяких учебников)) Но код ужастен до жути о_О :D

Такая, знаешь, личная.
 
Последнее редактирование модератором:

confirm2315

Новичок
Регистрация
26.01.2015
Сообщения
27
Благодарностей
9
Баллы
3
как самый простой вариант, без Linq и т.д.
Код:
// получаем список со строками поиска
var textList = project.Lists["textList"];
// получаем список, в котором будем искать
var sourceList = project.Lists["SourceList"];
lock(SyncObjects.ListSyncer)
{
    // проходим по каждому элементу списка со строками
    foreach(string textContains in textList)
    {
        // проходим по целевому списку, проверяя совпадение со строкой, взятой с первоначального списка
        for(int i=0; i < sourceList.Count; i++)
        {
            // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
            if (sourceList[i].Contains(textContains))
                return "yes";
        }
    }
}
// если ничего не нашли возвращаем "no"
return "no";
 
  • Спасибо
Реакции: CSS и proffman

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
как самый простой вариант, без Linq и т.д.
Достаточно простой вариант, и кода поменьше чем я вчера намутил... :D

А как сделать тоже самое лишь наоборот, если хоть одна строка не совпадает то делаем no, а если все совпадают то выходим по yes?
 
Последнее редактирование модератором:

confirm2315

Новичок
Регистрация
26.01.2015
Сообщения
27
Благодарностей
9
Баллы
3
Код:
// получаем список со строками поиска
var textList = project.Lists["textList"];
// получаем список, в котором будем искать
var sourceList = project.Lists["SourceList"];
lock(SyncObjects.ListSyncer)
{
    // проходим по каждому элементу списка со строками
    foreach(string textContains in textList)
    {
        // проходим по целевому списку, проверяя совпадение со строкой, взятой с первоначального списка
        for(int i=0; i < sourceList.Count; i++)
        {
            // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
            if (!sourceList[i].Contains(textContains))
                return "no";
        }
    }
}
// если ничего не нашли возвращаем "no"
return "yes";
ну там комменты только поправить :-)
 
Последнее редактирование модератором:
  • Спасибо
Реакции: CSS и proffman

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Вчера тоже так делал !sourceList, был крайне удивлен почему не работало. Потом че-то там про unless нашел, думал ! в C# не работает, а оказывается причина была в списках. Очистил, по новой записал ключи и всё заработало :D
 

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