C# 索引搜索中的二维数组,使用 lambda 表达式的数组



我有一个 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()

最新更新