具有给定数字的单个列表中数字的笛卡尔积 (C#)

Cartesian product of numbers in a single list with given number (C#)

我只想在 C# 中获取具有指定数字的单个列表中数字的笛卡尔积。在下面,我给出了一些实际我想要得到的例子:

List<int> numbers = new List<int>() { 0, 1, 2 };

应该有一个函数来获取给定数字 n 的所有笛卡尔积。

例如,n=2 那么输出应该是这样的:

0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2

对此有什么建议或示例吗?

只要您只想创建两个集合的笛卡尔积就可以使用 LINQ SelectMany:

var n = 2;
var numbers = Enumerable.Range(0, n + 1);
var cartesianProduct = numbers.SelectMany(_ => numbers, (a, b) => Tuple.Create(a, b));

当枚举 cartesianProduct 时,它将完全按照您在问题中指定的方式生成 9 个元组。

如果您必须创建更高维度的笛卡尔积it is better to use recursion