Вложенный цикл над одним и тем же списком, увеличивающий количество гнезд

#foreach #nested #nested-loops

#foreach #Вложенный #вложенные циклы

Вопрос:

Я хочу иметь вложенные циклы над одним и тем же списком при увеличении числа вложенных циклов. Внутренний цикл вызовет метод со списком параметров.

     public void MainMethod()
    { 
        var list = new List<MyObject>();
        //Populate list...
        foreach (var item1 in list)
        {
            foreach (var item2 in list)
            {
                MyMethod(item1, item2);
            }
        }
        foreach (var item1 in list)
        {
            foreach (var item2 in list)
            {
                foreach (var item3 in list)
                {
                    MyMethod(item1, item2, item3);
                }
            }
        }
        // and so on...
    }

    private void MyMethod(params MyObject[] items)
    {
       
    }
 

Есть ли способ упростить это?

Обновление: одним из улучшений является добавление вызова метода предыдущих вложенных циклов внутри последнего вложенного цикла.

     foreach (var item1 in list)
    {
        foreach (var item2 in list)
        {
            foreach (var item3 in list)
            {
                MyMethod(item1, item2, item3);
            }
            MyMethod(item1, item2);
        }
    }
 

Мой последний вложенный цикл будет иметь глубину 11 уровней, поэтому я подумал, что может быть более умный способ сделать это.

Комментарии:

1. не имеет смысла. myMethod ожидает массив, если вы не передаете массив, кроме того, вы передаете тот же элемент

2. myMethod принимает массив параметров. Я передаю (item1, item2) в первый раз и (item1, item2 и item3) во второй раз. Параметры превращают их в массивы.