c#index中的2d数组使用lambda表达式搜索数组

时间:2017-10-15 18:06:28

标签: c# arrays

我有一个二维数组: -

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表达式实现此结果的方法。

2 个答案:

答案 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()