Подскажите С# сниппет для копирования списков в столбцы одной таблицы

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18
Есть четыре списка, в каждом из которых равное кол-во строк спаршенных данных. Сразу сохранять в таблицу эти данные не получиться, так как их приходится неоднократно очищать регулярками помещая в списки. То есть миновать сохранение в списки в любом случае не получиться. Поэтому логика построена так, что с каждой страницы разные данные раскидываются по спискам. И когда все страницы заканчиваются то из каждого списка берется по строке и перемещается в разные столбцы таблицы. Делается все это циклом с помощью стандартных экшенов. Но такой процесс занимает не мало времени. Особенно если строк в списках более 100. Поэтому хотелось бы это ускорить с помощью С# сниппета.

Нашел такой вариант http://zennolab.com/discussion/threads/modernizovat-snipet-so-spiskami.22351/#post-150607 но там 2 списка, а у меня 4. Самому же правильно добавить еще два списка у меня не получилось. Подскажите рабочий вариант такого сниппета.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
этот процесс занимает много времени в проджектмейкере или в зеннопостере?
 

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18
этот процесс занимает много времени в проджектмейкере или в зеннопостере?
В PM, 100 строк примерно 2-3 минуты. Может конечно это и не много, но все равно хотелось бы быстрее. Да и строк в этих списках может быть несколько сотен. Сейчас проверю, сколько это займет времени в ZP. В любом случа снипет, который я привел выше делает это за считанные секунды. Вот только в моем случае он заполняет всего два столбца.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 614
Благодарностей
4 602
Баллы
113
думаю, после результатов с зп проблема иссякнет
 

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18
думаю, после результатов с зп проблема иссякнет
Да скорость значительно выросла. По 224 строки из каждого списка были перенесены ZP в таблицу примерно за 1 минуту, ну или максимум за 2. В принципе вполне можно обойтись и стандартными экшенами, но в любом случае буду очень благодарен тому кто сможет подправить выше приведенный сниппет под использование четырех списков, а не двух. Такой сниппет, точно лишним не будет.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 106
Баллы
113
C#:
var list1 = project.Lists["List1"];
var list2 = project.Lists["List2"];
var list3 = project.Lists["List3"];
var list4 = project.Lists["List4"];
var result = project.Tables["ResultTable"];
int tableCount = result.RowCount;

lock(SyncObjects.TableSyncer)
{
    for (int i = 0; i < list1.Count; i++)
    {
        result.SetCell(0, tableCount, list1[i]);
        result.SetCell(1, tableCount, list2[i]);
        result.SetCell(2, tableCount, list3[i]);
        result.SetCell(3, tableCount, list4[i]);
        tableCount = tableCount + 1;
    }
}
 
  • Спасибо
Реакции: Teko и Belwin

Belwin

Client
Регистрация
30.06.2015
Сообщения
125
Благодарностей
13
Баллы
18
C#:
var list1 = project.Lists["List1"];
var list2 = project.Lists["List2"];
var list3 = project.Lists["List3"];
var list4 = project.Lists["List4"];
var result = project.Tables["ResultTable"];
int tableCount = result.RowCount;

lock(SyncObjects.TableSyncer)
{
    for (int i = 0; i < list1.Count; i++)
    {
        result.SetCell(0,tableCount,list1[i]);
        result.SetCell(1,tableCount,list2[i]);
        result.SetCell(2,tableCount,list3[i]);
        result.SetCell(3,tableCount,list4[i]);
        tableCount = tableCount + 1;
    }
}
Большое спасибо.
 

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