我有一个二维数组: -
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};
我想要的是一个结果数组,它取自array1的宽度和array2的长度 ,以便得到数组
arrayrel = {组[0,1],组[0,3],组[2,1],组[2,3],组[4,1]组[4,3]}
arrayrel={2,4,12,14,22,24}
这可以使用循环完成我想知道是否有使用lambda表达式实现此结果的方法。
答案 0 :(得分:2)
您可以使用Select
然后使用SelectMany
:
int[] arrayrel = array1.Select(i => array2.Select(j => group[i, j])).SelectMany(x => x).ToArray();
第一个Select
会产生IEnumerable<IEnumerable<int>>
,您可以使用SelectMany
展平。
答案 1 :(得分:2)
你可以这样做:
var result = array1.SelectMany(row => array2.Select(col => group[row, col]));
如果您想将结果从IEnumerable<int>
转换为int[]
,则需要在声明的末尾添加toArray()
。