как объединить списки

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
вопрос может и простой, но ответа я пока не нашел ...
итак: есть несколько списков(A, B, C, D) с одинаковым количеством строк, как объединить списки так, что бы строки:
1-A + 1-B + 1-C = 1-D, 2-A + 2-B + 2-C = 2-D, 3-A + 3-B + 3-C = 3-D... и т.д.
использовать цикл не хочется .. может как то можно одним кубиком... ???
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Циклом не так уж и сложно, см. пример.
Одним кубиком только через C#... Но там те же циклы придется прописывать.
 

Вложения

  • Спасибо
Реакции: lbvf65 и blud

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
Циклом не так уж и сложно, см. пример.
Одним кубиком только через C#... Но там те же циклы придется прописывать.
спасибо ... жаль конечно, что без цикла никак... но как говориться : на безрыбье и хрен водопровод... буду пробовать ... еще раз спасибо
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
Код:
var listA = project.Lists["A"];
var listB = project.Lists["B"];
var listC = project.Lists["C"];
var listD = project.Lists["D"];

for (int i=0; i < listA.Count; i++) {
    listD.Add(listA[i] + listB[i] + listC[i]);
}
 
  • Спасибо
Реакции: blud

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Тут спрошу. Задача похожая. Только списков три.
Нужно брать первую строку в первом списке, добавлять первую из второго списка и первую из третьего. Потом 1-1-2, 1-1-3, 1-1-4.
Как закончились строки в третьем списке, переходим ко второй строке второго списка: 1-2-1, 1-2-2 и т. д.
Когда и во втором списке закончились все строки, то переходим ко второй строке первого.
В итоге имеем 4-ый список со всеми вариациями.
Тремя вложенными циклами могу реализовать, но может быть есть другой способ?
 
  • Спасибо
Реакции: Шива

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
Тут спрошу. Задача похожая. Только списков три.
Нужно брать первую строку в первом списке, добавлять первую из второго списка и первую из третьего. Потом 1-1-2, 1-1-3, 1-1-4.
Как закончились строки в третьем списке, переходим ко второй строке второго списка: 1-2-1, 1-2-2 и т. д.
Когда и во втором списке закончились все строки, то переходим ко второй строке первого.
В итоге имеем 4-ый список со всеми вариациями.
Тремя вложенными циклами могу реализовать, но может быть есть другой способ?
Код:
var listA = project.Lists["A"];
var listB = project.Lists["B"];
var listC = project.Lists["C"];
var listResult = project.Lists["Result"];

for (int i=0; i<listA.Count; i++) {
    for (int n=0; n<listB.Count; n++) {
        for (int t=0; t<listC.Count; t++) {
            listResult.Add(listA[i] + listB[n] + listC[t]);
        }
    }
}
 
  • Спасибо
Реакции: Severip

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Спасибо, конечно, но это элементарно. Написано выше - без вложенных циклов.
Хотя особо не принципиально, просто ищу новые методы.
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
Есть более сложные и замороченные способы, но при их реализации легко сделать несколько ошибок. Оно вам надо? Вложенные циклы прекрасно работают, «от добра добра не ищут».
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
Спасибо, конечно, но это элементарно. Написано выше - без вложенных циклов.
Хотя особо не принципиально, просто ищу новые методы.
откуда такая неприязнь к вложенным циклам? ) если это простейшее решение, то зачем изобретать велосипед
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Неприязнь по опыту работы с анимацией когда на каждом кадре просчитывается такая конструкция выше, то наступает алис)
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
ох уж эти циклы ... вот просьба к знатокам ... как такое можно организовать на C#:
 

Вложения

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
ох уж эти циклы ... вот просьба к знатокам ... как такое можно организовать на C#:
напиши что на входе и что нужно получить на выходе, вникать в такой проект сложнее, чем понять на словах
 

blud

Client
Регистрация
19.04.2011
Сообщения
657
Благодарностей
77
Баллы
28
на входе шесть файлов с кусками кейвордов.. на выходе нч....
сорри я там накосячил .. при сборке нч в списке G должно быть: {-Variable.a-} {-Variable.b-} {-Variable.c-} а не {-Variable.a-}:{-Variable.b-}:{-Variable.c-}
 

Nick

Client
Регистрация
22.07.2014
Сообщения
1 983
Благодарностей
817
Баллы
113
я написал программку на c#, которая как раз позволяет задавать ключевики и генерит все их сочетания, при этом поддерживается spintax, то есть задаёшь синонимы
{111|112|113|}{121|122|123|}
А он выдаёт:
111121
111122
111123
111
112121
112122
112123
112
113121
113122
113123
113
121
122
123
 

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
Есть 2 списка номер и сумма по 5000 строк.

Как их закинуть в таблицу? Чтобы номера соответствовали суммам? не хочется через цикли делать.

[B]nole[/B], можно код переделать чтобы в таблицу сохраняло в строке а и б
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
Есть 2 списка номер и сумма по 5000 строк.

Как их закинуть в таблицу? Чтобы номера соответствовали суммам? не хочется через цикли делать.

[B]nole[/B], можно код переделать чтобы в таблицу сохраняло в строке а и б
C#:
var listA = project.Lists["A"];
var listB = project.Lists["B"];
var tableA = project.Tables["result"];

for (int i=0; i < listA.Count; i++)
{
    tableA.AddRow(listA[i] + ";" + listB[i]); // где ";" - это разделитель столбцов в таблице result
}
 

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