有没有什么好的方法可以这样写:
foreach ((i,j) in PRODUCTOF(Range1, Range2))
或
PRODUCTOF(Range1, Range2).Sum((i,j) => i+17*j)
PRODUCTOF 对我来说是个未知数。
当然,您可以绕过这个或为此编写一个函数,但也许有一个应该更喜欢的内置语法。
请您参考如下方法:
你的意思是这样的:
foreach (var pair in Range1.SelectMany(x => Range2, (x, y) => new { x, y }))
{
// Use pair.x and pair.y
}
或者对于您的Sum 示例:
var sum = Range1.SelectMany(x => Range2, (x, y) => new { x, y })
.Sum(pair => pair.x + pair.y * 17);
作为查询表达式:
var query = from x in Range1
from y in Range2
select new { x, y };
var sum = query.Sum(pair => pair.x + pair.y * 17);
这是假设您想要叉积 - 每一对。如果您只是想组成对 { Range1(0), Range2(0) }, { Range1(1), Range2(1) } 等,那么您应该使用 Zip 代替。
