gpt4 book ai didi

c# - 将 SelectMany 应用于三个或更多序列

转载 作者:行者123 更新时间:2023-12-02 05:22:24 25 4
gpt4 key购买 nike

仅使用扩展方法应用 SelectMany 获得三个或更多序列的交叉连接的最佳方法是什么?有没有其他方法可以实现交叉连接?

测试数据

var a = Enumerable.Range(11, 2);
var b = Enumerable.Range(21, 2);
var c = Enumerable.Range(31, 2);

预期结果

 X  Y  Z 

11 21 31
11 21 32
11 22 31
11 22 32
12 21 31
12 21 32
12 22 31
12 22 32

我尝试过的

这是有效的代码,但我想知道是否有任何更容易阅读和理解的替代方法:

var d = a
.SelectMany(rb => b
.SelectMany(rc => c, (y, z) => new { Y = y, Z = z}),
(x, yz) => new { X = x, Y = yz.Y, Z = yz.Z });

等效的查询表达式很好,但不是我要找的:

var e = from x in a
from y in b
from z in c
select new { X = x, Y = y, Z = z };

最佳答案

您可以通过这种方式简化(即使不是很多)您的 SelectMany 查询:

var res = a.SelectMany(X => b.SelectMany(Y => c.Select(Z => new { X, Y, Z })));

关于c# - 将 SelectMany 应用于三个或更多序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13659629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com