Нужна помощь профессионалов C#

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18
Есть задача: есть экспорт на сайте с данными(данные варьируются от 6к до беск). Выгрузить за раз можем только 10к. Экспорт разбивается на части (кол-во выгрузок одного файла по 10к данных).
Нашел части по формуле, допустим их 7. Т.е 7 раз мы будем выгружать табл. с данными.
далее цикл со счетчиком порядкового номера части от 0 до (количество частей "7"допустим)
внутри цикла считаем начало и конец диапазона, начало диапазона (порядковый номер*5000+1000)
конец диапазона ((порядковый номер+1)*5000+1000)
Подскажите как это реализовать в цикле с помощью С#. Я в C# тугой.
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
3 042
Благодарностей
794
Баллы
113
вам надо выгружать таблицы и куда-то записывать номера строк начала и конца каждого из файлов, с учётом того - если бы это был один файл? тогда можно и без си шарпа обойтись
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18
вам надо выгружать таблицы и куда-то записывать номера строк начала и конца каждого из файлов, с учётом того - если бы это был один файл? тогда можно и без си шарпа обойтись
я сохраняю таблицы в папку. Например у меня есть 40к данных. Я на подсознательном уровне понимаю, что выгрузок будет 4 по 10к. И руками мы можем делать 4 итерации в шаге с шагом в 6к.
Вот скрин с сайта :http://joxi.ru/xAebLl0TYlLwNr
Я паршу значение всех мне доступных данных, делю на 5к(самое приближенное к истине, что данные в табл. не будут пересекаться.) и получаю кол-во частей(повторов выполнения). После мне нужен цикл сколько раз выгружать данные по 10к в шаге 6к.
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
3 042
Благодарностей
794
Баллы
113
вам перед выгрузкой - надо спарсить число 40412 и положить его в переменную, а потом кубик с си шарпом:
C#:
int summa= Convert.ToInt32(project.Variables['sparsennoe'].Value);
int kolvo_iteraciy=summa%10000;
return kolvo_iteraciy;
далее выгружаете в цикле с условием начиная 1 до той переменной, которую вернёт первый кубик, перед циклом вы устанавливаете значение для строк 1 и 10 000, и каждую итерацию цикла увеличиваете значение переменных на 10 000 - это начало и конец выгрузки, когда выйдете из цикла (дойдёте до 40000) - и потом апендецит - это вы указываете 40000 это начало и указываете спарсенное значение 40412 - это конец и всё.
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
3 042
Благодарностей
794
Баллы
113
хотя можно было бы и без си шарпа - после каждой итерации циикла и прибавления 10 000 - к началу и концу - проверять ифом, чтобы конец был не больше спарсенного числа, если больше, то откатываемся на 10 000 назад - и конец делаем - это спарсенное значение
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18
вам перед выгрузкой - надо спарсить число 40412 и положить его в переменную, а потом кубик с си шарпом:
C#:
int summa= Convert.ToInt32(project.Variables['sparsennoe'].Value);
int kolvo_iteraciy=summa%10000;
return kolvo_iteraciy;
далее выгружаете в цикле с условием начиная 1 до той переменной, которую вернёт первый кубик, перед циклом вы устанавливаете значение для строк 1 и 10 000, и каждую итерацию цикла увеличиваете значение переменных на 10 000 - это начало и конец выгрузки, когда выйдете из цикла (дойдёте до 40000) - и потом апендецит - это вы указываете 40000 это начало и указываете спарсенное значение 40412 - это конец и всё.
Это конечно все хорошо. Но я уже знаю как высчитываются мои части. Это уже реализовано(спаршенное значение делится на 5000к) и получаются мои части.
Вот мои кубики:
http://joxi.ru/82369ept65qKam
После чего нужен такой цикл, который я не бом-бом как сделать:
внутри цикла считаем начало и конец диапазона, начало диапазона (порядковый номер*5000+1000)
конец диапазона ((порядковый номер+1)*5000+1000)
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18
http://joxi.ru/krDJLeDT0B5WY2
в этом куске выполняется итерация с каких значений стартовать.
и это как-то нужно зациклить. :(
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
3 042
Благодарностей
794
Баллы
113
я не пойму - откуда 5000к???
у вас судя по скрину 40412 результатов и за раз можно выгрузить 10 000, и как я понял там указываются порядковые номера начала и конца из всей выгрузки
вам надо просто выгружать в цикле с х - начало до (х+10 000) - это конец, и с каждым проходом в конце увеличивать х на 10000, и перед заходом в новый круг проверять (х+10000) < 40412 - если меньше - то заходить в новый круг - если больше, то выход из цикла в последню выгрузку, где х это начало, а конец это спарсенное число 40412

перед заходм в цикл вы объявляете две переменные - первая =1, вторая равна 10000, перед заходом на второй круг вы увеличиваете значение каждой переменной на 10 000, это будет 10001 и 20001, проверяете чтобы 20001 было меньше 40412, если меньше то выгружаете с такими значениями, если больше то будут они 40001 и 50001 - тогда 50001 будет больше 40412 и мы выходим из цикла и ставим последнюю выгрзку с 40001 до 40412
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
3 042
Благодарностей
794
Баллы
113
вам нужны кубики - обработка переменных - два - установить значение и два увеличить значение и 1 иф для сравнения большей переменной со спарсеным значением - вот и весь цикл
 

jun_dev

Пользователь
Регистрация
04.08.2017
Сообщения
121
Благодарностей
7
Баллы
18
я не пойму - откуда 5000к???
у вас судя по скрину 40412 результатов и за раз можно выгрузить 10 000, и как я понял там указываются порядковые номера начала и конца из всей выгрузки
вам надо просто выгружать в цикле с х - начало до (х+10 000) - это конец, и с каждым проходом в конце увеличивать х на 10000, и перед заходом в новый круг проверять (х+10000) < 40412 - если меньше - то заходить в новый круг - если больше, то выход из цикла в последню выгрузку, где х это начало, а конец это спарсенное число 40412

перед заходм в цикл вы объявляете две переменные - первая =1, вторая равна 10000, перед заходом на второй круг вы увеличиваете значение каждой переменной на 10 000, это будет 10001 и 20001, проверяете чтобы 20001 было меньше 40412, если меньше то выгружаете с такими значениями, если больше то будут они 40001 и 50001 - тогда 50001 будет больше 40412 и мы выходим из цикла и ставим последнюю выгрзку с 40001 до 40412
Спасибо большое. Буду разбираться с вашей версией.
 

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