Поиск по списку

gs517

Client
Регистрация
18.05.2013
Сообщения
138
Благодарностей
15
Баллы
18
Добро! Подкиньте пожалуйста снип. "Поиск по списку". нашел аналог, но там кладёт в другой список результат, а мне бы в переменную записывать. в C# не разбираюсь, жаль(

Список огромный 7 мб текста. Стандартными методами сильно нагружает, если ещё и в 20 потоков
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
ну грузить будет не меньше... но вот...
var list = project.Lists["Список1"];
string needle = project.Variables["то что ищем"].Value;
foreach(string data in list)
{
if(data.Contains(needle))
return data;
}
return "ничего не найдено";
 

misterio

Пользователь
Регистрация
06.09.2014
Сообщения
92
Благодарностей
20
Баллы
8
вот такой же только для поиска регуляркой

Код:
// берем регулярное выражение для парсинга из переменной
var parserRegexPattern = project.Variables["regex"].Value;
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
// получаем список, в котором будем искать
var sourceList = project.Lists["list1"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем строку регулярным выражением, если есть совпадение возвращаем найденное
        if (parserRegex.IsMatch(str))
        {
            return str;     
        }
    }
}
return "";
 
  • Спасибо
Реакции: mig-z

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 631
Благодарностей
461
Баллы
83
Код:
var url = project.Variables["Id"].Value;
var check = project.Lists["list"];
return check.Contains(url);
проверяет наличие строки в списке
 
  • Спасибо
Реакции: Yo_Moe

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
mylist = mylist.Where(s=>System.Text.RegularExpressions.Regex.IsMatch(s, "find me")).ToList(); //фильтр списка по регулярному выражению
 

misterio

Пользователь
Регистрация
06.09.2014
Сообщения
92
Благодарностей
20
Баллы
8
ищет по списку регуляркой и выдает номер строки которая найдена
Код:
// берем регулярное выражение для парсинга из переменной
var parserRegexPattern = project.Variables["search_string"].Value;
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
// получаем список, в котором будем искать
var sourceList = project.Lists["base"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем строку регулярным выражением, если есть совпадение возвращаем найденное
        if (parserRegex.IsMatch(str))
        {
            return i+1;     
        }
    }
}
return "";
 
  • Спасибо
Реакции: xawer и partnerleon

misterio

Пользователь
Регистрация
06.09.2014
Сообщения
92
Благодарностей
20
Баллы
8
Код:
return i+1;
+1 не нужно. у нас списки от нуля начинаются. тупанул.
 

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