Как сгенерировать комбинацию из N элементов с ограниченным запасом по 2 каждого без явных вложенных циклов

Если N фиксировано, как N = 3, то это легко, я могу использовать вложенные циклы глубины 3. Например,

from i in Enumerable.Range(0, 2)
from j in Enumerable.Range(0, 2)
from k in Enumerable.Range(0, 2)
select new int[] { i, j, k };

Что делать, если N является переменной?

Ответы на вопрос(1)

Ваш ответ на вопрос