我有一个 2d 数组:-
int[,] group = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25},};
现在,除此之外,我还有另外两个数组:-
int[]array1= new int[]{0,2,4};
int[]array2= new int[]{1,3};
我想要的是一个结果数组,它的宽度来自数组 1,长度来自数组 2,以便得到的数组
arrayrel={group[0,1],group[0,3],group[2,1],group[2,3],group[4,1]group[4,3] }
arrayrel={2,4,12,14,22,24}
这可以使用循环来完成 我想知道是否有一种方法可以使用 lambda 表达式实现此结果。
Select
然后SelectMany
:
int[] arrayrel = array1.Select(i => array2.Select(j => group[i, j])).SelectMany(x => x).ToArray();
第一个Select
产生一个IEnumerable<IEnumerable<int>>
,你用SelectMany
来展平它。
您可以按如下方式执行此操作:
var result = array1.SelectMany(row => array2.Select(col => group[row, col]));
如果要将结果从 IEnumerable<int>
转换为 int[]
则需要在语句末尾添加toArray()
。