Замена перебора в цикле

kuppyc

Client
Регистрация
13.06.2015
Сообщения
27
Благодарностей
1
Баллы
3
Подскажите пожалуйста как лучше построить логику шаблона ?
У меня есть список вида:


Angel212|%|76561198228920618|%|176.85.211.44
Shima|%|76561198102783584|%|5.42.81.173
S-1(9)-Z(h)-8|%|76561188096792112|%|101.172.69.85
Anabolik|%|76561198018226712|%|213.172.115.205

который нужно заново перебирать каждый день, т.к он пополняется.
Берем 1 строку, от туда ип и 18 цифр, ищем совпадение по ип, нашли - записать строку которую брали и строку которую нашли, в список или табличку.
Потом 2 строку, 3, 4 и тд.

Перебором в цикле - 700 строк перебирает целый день, а список большой и растет.
Есть снипеты всякие но я не смог понять как их применить именно для моих целей, если бы был какой нибудь который показывал номер строки в списке или exel, было бы здорово ) А лучше всех строк в которых есть совпадения )
 
Последнее редактирование:

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
823
Баллы
93
Перебором в цикле - 700 строк перебирает целый день, а список большой и растет.
o_O Жестяк, чего там перебирать целый день.
Это все укладывается в пару сек.
Поди регулярками перебираете или еще каким извратом?:D

Так понял надо найти строки, у которых одинаковые IP и сложить в отдельную таблицу?
Сейчас накидаю пару строк кода.
 

kuppyc

Client
Регистрация
13.06.2015
Сообщения
27
Благодарностей
1
Баллы
3
o_O Жестяк, чего там перебирать целый день.
Это все укладывается в пару сек.
Поди регулярками перебираете или еще каким извратом?:D

Так понял надо найти строки, у которых одинаковые IP и сложить в отдельную таблицу?
Сейчас накидаю пару строк кода.
Angel212|%|76561198228920618|%|176.85.211.44
Shima|%|76561198102783584|%|5.42.81.173
S-1(9)-Z(h)-8|%|76561188096792112|%|101.172.69.85
Angel212|%|7656119822894444|%|176.85.211.44

Для примера, 1 и 4 строка ) т.е у них один и тот же ип, а 18 цифр другие ) И вот как такие находить не могу сообразить никак )
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
823
Баллы
93

Код:
var list = new List<string>
{
    "Angel212|%|76561198228920618|%|176.85.211.44",
    "Shima|%|76561198102783584|%|5.42.81.173",
    "S-1(9)-Z(h)-8|%|76561188096792112|%|101.172.69.85",
    "Anabolik|%|76561198018226712|%|213.172.115.205",
    "Test|%|12345198102783584|%|176.85.211.44",
    "Test2|%|12345198102783584|%|213.172.115.205"
};

var newlist = list
    .Select(e => e.Split(new[] {"|%|"}, StringSplitOptions.None)) //разбиваем каждую строчку, в массив, разделитель |%|
    .GroupBy(e => e[2]) //группируем по IP
    .Where(e => e.Count() >= 2) //берем группы где кол-во больше двух, т.е. повторяющиеся IP
    .Select(e => e.Select(f => f[1] + "|%|" + f[2])) //в каждой группе собираем каждый массив обратно в строчку, берем только цифры и IP
    .SelectMany(e => e.ToList()) //объединяем списки строк в один список
    .ToList();
 
  • Спасибо
Реакции: kuppyc и Dimionix

kuppyc

Client
Регистрация
13.06.2015
Сообщения
27
Благодарностей
1
Баллы
3

Код:
var list = new List<string>
{
    "Angel212|%|76561198228920618|%|176.85.211.44",
    "Shima|%|76561198102783584|%|5.42.81.173",
    "S-1(9)-Z(h)-8|%|76561188096792112|%|101.172.69.85",
    "Anabolik|%|76561198018226712|%|213.172.115.205",
    "Test|%|12345198102783584|%|176.85.211.44",
    "Test2|%|12345198102783584|%|213.172.115.205"
};

var newlist = list
    .Select(e => e.Split(new[] {"|%|"}, StringSplitOptions.None)) //разбиваем каждую строчку, в массив, разделитель |%|
    .GroupBy(e => e[2]) //группируем по IP
    .Where(e => e.Count() >= 2) //берем группы где кол-во больше двух, т.е. повторяющиеся IP
    .Select(e => e.Select(f => f[1] + "|%|" + f[2])) //в каждой группе собираем каждый массив обратно в строчку, берем только цифры и IP
    .SelectMany(e => e.ToList()) //объединяем списки строк в один список
    .ToList();
Спасибо ) а как это применить ?) в скобочки от 2 до 9 вставлять текст ? или в var list = "вставлять название списка" ?
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
823
Баллы
93
  • Спасибо
Реакции: kuppyc

kuppyc

Client
Регистрация
13.06.2015
Сообщения
27
Благодарностей
1
Баллы
3

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
823
Баллы
93
Код:
var list = project.Lists["base"];

var newlist = list
    .Select(e => e.Split(new[] {"|%|"}, StringSplitOptions.None)) //разбиваем каждую строчку, в массив, разделитель |%|
    .GroupBy(e => e[2]) //группируем по IP
    .Where(e => e.Count() >= 2) //берем группы где кол-во больше двух, т.е. повторяющиеся IP
    .Select(e => e.Select(f => f[1] + "|%|" + f[2])) //в каждой группе собираем каждый массив обратно в строчку, берем только цифры и IP
    .SelectMany(e => e.ToList()) //объединяем списки строк в один список
    .ToList();
 

kuppyc

Client
Регистрация
13.06.2015
Сообщения
27
Благодарностей
1
Баллы
3
Код:
var list = project.Lists["base"];

var newlist = list
    .Select(e => e.Split(new[] {"|%|"}, StringSplitOptions.None)) //разбиваем каждую строчку, в массив, разделитель |%|
    .GroupBy(e => e[2]) //группируем по IP
    .Where(e => e.Count() >= 2) //берем группы где кол-во больше двух, т.е. повторяющиеся IP
    .Select(e => e.Select(f => f[1] + "|%|" + f[2])) //в каждой группе собираем каждый массив обратно в строчку, берем только цифры и IP
    .SelectMany(e => e.ToList()) //объединяем списки строк в один список
    .ToList();
все таки не будет снипета который выдаст все номера строк, в которых содержится переменная ? в текстовике )
 

BaronArtem

Новичок
Регистрация
28.06.2016
Сообщения
26
Благодарностей
0
Баллы
1

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с BaronArtem какие-либо сделки.

Подскажите пожалуйста как лучше построить логику шаблона ?
У меня есть список вида:


Angel212|%|76561198228920618|%|176.85.211.44
Shima|%|76561198102783584|%}8.42.81.173
S-1(9)-Z(h)-8|%|76561188096792112|%|101.172.69.85
Anabolik|%|76561198018226712|%|213.172.115.205

который нужно заново перебирать каждый день, т.к он пополняется.
Берем 1 строку, от туда ип и 18 цифр, ищем совпадение по ип, нашли - записать строку которую брали и строку которую нашли, в список или табличку.
Потом 2 строку, 3, 4 и тд.

Перебором в цикле - 700 строк перебирает целый день, а список большой и растет.
Есть снипеты всякие но я не смог понять как их применить именно для моих целей, если бы был какой нибудь который показывал номер строки в списке или exel, было бы здорово ) А лучше всех строк в которых есть совпадения )
  1. var list = project.Lists["base"];

  2. var newlist = list
  3. .Select(e => e.Split(new[] {"|%|"}, StringSplitOptions.None)) //разбиваем каждую строчку, в массив, разделитель |%|
  4. .GroupBy(e => e[2]) //группируем по IP
  5. .Where(e => e.Count() >= 2) //берем группы где кол-во больше двух, т.е. повторяющиеся IP
  6. .Select(e => e.Select(f => f[1] + "|%|" + f[2])) //в каждой группе собираем каждый массив обратно в строчку, берем только цифры и IP
  7. .SelectMany(e => e.ToList()) //объединяем списки строк в один список
  8. .ToList();
 

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