Как перебирать переменные быстро?

Vasyl1

Client
Регистрация
11.12.2016
Сообщения
203
Благодарностей
23
Баллы
18
Друзья, подскажите каким образом перебирать переменные.
У меня есть список в переменной вот такой
42;140;854;8089.77;1;69.52;0.60;1
42;99;854;6373.36;1;99.24;0.60;1
42;139;854;14892.11;1;4.86;0.60;1
42;93;854;791842.32;1;0.02;0.60;1
56;161;854;7.8103;1;10288.65;0.60;1
56;162;854;1458.4831;1;58.38;0.60;1
56;140;854;2592.5775;1;69.52;0.60;1
1;1;854;1955.0325;1;99.24;0.60;1
56;139;854;5420.8779;1;4.86;0.60;1
6;2;374;1;1.02009384;8974.03;0.382;1
56;1;374;28;1;8663.77;0.382;1
42;2;374;1.02;1;8974.03;0.382;1
56;2;374;1;2.29;8974.03;0.382;1
3;1;104;1.02;1;132.07;0.94;1
43;1;104;1;33.95;132.07;0.94;1
2;1;104;79;1;132.07;0.94;1
96;1;104;1;7.05;132.07;0.94;1
1;1;104;1.24;1;87.24;0.94;1
1;1;104;13;1;0.61;0.94;1
мне нужно найти все строки которые начинаються с вот этого "1;1;"
Я вот создал такой код на С#. но он очень долго обрабатывается, примерно 30-60 минут
так как в переменной около 80 000 строк.

Код:
//Данные которые нужно искать в переменной
string a =project.Variables["one_id_valuti"].Value;
string b =project.Variables["two_id_valuti"].Value;
string c = a+b;
//Получаем количество строк в переменной
string text0 = project.Variables["bm_rates"].Value;
int k = text0.Split('\n').Count();
//проверяем каждую строку на нужное нам значение
for (int i = 0; i < k; i++){
    string text = Macros.TextProcessing.Regex(text0, @".*?\n", ""+i+"")[0].FirstOrDefault();
    string text1 =Macros.TextProcessing.Regex(text, @".*?;", "0")[0].FirstOrDefault();
    string text2 = Macros.TextProcessing.Regex(text, @".*?;", "1")[0].FirstOrDefault();
//зависываем в строку только то что что совпадает
    if (text1+text2==c){
project.Lists["Список 1"].AddRange(Macros.TextProcessing.Regex(text, @""+text1+".*").Select(g => g.FirstOrDefault()));
    }
    }
Каким образом мне взять строки из переменной с значениями которые начинаются на "1;1;", и что бы это было быстрее?
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Код:
string str = project.Variables["test"].Value;
List<string> lst = new List<string>();

lst = Regex.Split(str, "\r\n").ToList();

for(int i = 0; i < lst.Count(); i++)
{
    if(lst[i].StartsWith("1;1;")) project.Lists["Список 1"].Add(lst[i]);
}
 
  • Спасибо
Реакции: orka13 и Vasyl1

Vasyl1

Client
Регистрация
11.12.2016
Сообщения
203
Благодарностей
23
Баллы
18
Код:
string str = project.Variables["test"].Value;
List<string> lst = new List<string>();

lst = Regex.Split(str, "\r\n").ToList();

for(int i = 0; i < lst.Count(); i++)
{
    if(lst[i].StartsWith("1;1;")) project.Lists["Список 1"].Add(lst[i]);
}
Круто, спасибо большое, работает моментально. А то я какими то костылями пытался все это сделать. Еще раз спасибо.
 

Vasyl1

Client
Регистрация
11.12.2016
Сообщения
203
Благодарностей
23
Баллы
18
Код:
string str = project.Variables["test"].Value;
List<string> lst = new List<string>();

lst = Regex.Split(str, "\r\n").ToList();

for(int i = 0; i < lst.Count(); i++)
{
    if(lst[i].StartsWith("1;1;")) project.Lists["Список 1"].Add(lst[i]);
}
А как добавить это все в переменную а не в список? чтобы было как вот здесь (string str = project.Variables["test"].Value);-)
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63
Код:
string str = project.Variables["test"].Value;
List<string> lst = new List<string>();
StringBuilder sb = new StringBuilder();
lst = Regex.Split(str, "\r\n").ToList();

for(int i = 0; i < lst.Count(); i++)
{
    if(lst[i].StartsWith("1;1;")) sb.AppendLine(lst[i]);
}

project.Variables["Result"].Value = sb.ToString();
 
  • Спасибо
Реакции: Vasyl1

Vasyl1

Client
Регистрация
11.12.2016
Сообщения
203
Благодарностей
23
Баллы
18
Код:
string str = project.Variables["test"].Value;
List<string> lst = new List<string>();
StringBuilder sb = new StringBuilder();
lst = Regex.Split(str, "\r\n").ToList();

for(int i = 0; i < lst.Count(); i++)
{
    if(lst[i].StartsWith("1;1;")) sb.AppendLine(lst[i]);
}

project.Variables["Result"].Value = sb.ToString();
Спасибо большое. У меня еще получилось сделать вот так!

Код:
string str = project.Variables["bm_rates"].Value;
List<string> lst = new List<string>();
lst = Regex.Split(str, "\n").ToList();

List<string> lst1 = new List<string>();
for(int i = 0; i < lst.Count(); i++)
{
    if(lst[i].StartsWith("1;1;")) lst1.Add(lst[i]);
}
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63

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