获取 LINQ 笛卡尔积的单个项目

Get individual items of LINQ Cartesian Product

var A = new[] {A, B}; 
var B = new[] {X, Y, Z}; 
var Product = 
from _A in A 
from _B in B 
select new[] { _A, _B };
//Intent below:
foreach (pair in Product)
{
SomeFunction(pair[0],pair[1])
}

//Output:
SomeFunction(A,X)
SomeFunction(A,Y)
SomeFunction(A,Z)
SomeFunction(B,X)
SomeFunction(A,Y)
SomeFunction(A,Z)

我如何检索 _A 和 _B 作为自变量,而不是将两个列表合并为一个项目?这样对于每个笛卡尔叉积组合(A、X..A、Y..A、Z.. 等等),我可以将它们发送到另一个函数中进行处理?

理想情况下,这些变量不会是字符串,因此任何获取字符 @ 索引的变通方法都不起作用。

编辑: 看来我一直都是对的。感谢社区确认我的意图。

我认为您已完成 95%,将您的示例放在一起,您已完成 99%。

您的查询将为您提供所需的笛卡尔积。

var A = new[] {A, B}; 
var B = new[] {X, Y, Z}; 
var Product = from _A in A 
              from _B in B 
              select new[] { _A, _B };

Product 现在 IEnumerable<T>。它看起来像这样:

[
    [A, X]
    [A, Y]
    [A, Z]
    [B, X]
    [B, Y]
    [B, Z]
]

您现在需要做的就是枚举它的值,这是您的意图(尽管变量名是错误的):

//Intent below:
foreach (pair in Product)
{
    SomeFunction(pair[0], pair[1]);
}