Skip to main content
 首页 » 编程设计

c#之查询范围的类集合产品等

2024年02月02日28kenshinobiy

有没有什么好的方法可以这样写:

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 代替。