获取 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]);
}
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]);
}