编辑: 我有建筑物,里面有窗户,墙壁,门等等。我想通过从门上取一扇门,从窗户看窗户等来组合它们。组合应包括所有可能性。我将问题呈现为数组集,每个数组都有一组元素。现在我想把这些元素组合在一起,条件是每个组合必须包含每个数组的最多一个元素(数组的数量是无限的,可以是任何数字)。为了澄清问题,我举一个例子:
示例数组:
array1={1,2,3}
array2={a,b,c}
array3={#,$,%}
输出:
1
1,a
1,a,#
1,a,$
1,a,%
1,b
1,b,#
1,b,$
1,b,%
1,c
1,c,#
1,c,$
1,c,%
(for 2 and 3 the same)
a
a,#
a,$
a,%
b
b,#
b,$
b,%
(for c the same)
#
$
%
这意味着在每个组合中每个阵列最多只有一个元素。
答案 0 :(得分:1)
var array1 = new[] {1, 2, 3};
var array2 = new[] { "a", "b", "c"};
var array3 = new[] { "#", "$", "%"};
// ----------------------------------
自己动手......
var l1 = array1.Select(i=>i.ToString()).ToList();
var l2 = array2.ToList();
var l3 = array3.ToList();
l1.Add("");
l2.Add("");
l3.Add("");
// ----------------------------------
foreach (var a in l1)
foreach (var b in l2)
foreach (var c in l3)
Console.WriteLine($"{a}{b}{c}");
或使用LINQ
var result =
from x in l1
from y in l2
from z in l3
select new[] { x, y, z };
foreach (var r in result)
Console.WriteLine($"{r[0]}{r[1]}{r[2]}");