c#索引搜索中的二维数组,使用lambda表达式进行数组搜索
我有一个2d阵列:-c#索引搜索中的二维数组,使用lambda表达式进行数组搜索,c#,arrays,C#,Arrays,我有一个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=新的int[]{0,2,4} int[]array2=新的int[]{1,3} 我想要的是一个结果数组,它的宽度取自array1,长度取自array2 ,以便生成的数组 arrayrel={群[0,1],群[0,3],群[
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=新的int[]{0,2,4}代码>
int[]array2=新的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}
这可以使用loop实现。我想知道是否有一种方法可以使用lambda表达式实现这一结果。您可以使用选择,然后选择many
:
int[] arrayrel = array1.Select(i => array2.Select(j => group[i, j])).SelectMany(x => x).ToArray();
第一个Select
生成一个IEnumerable
,您可以使用SelectMany
将其展平,然后使用SelectMany
:
int[] arrayrel = array1.Select(i => array2.Select(j => group[i, j])).SelectMany(x => x).ToArray();
第一个Select
生成一个IEnumerable
,您可以使用SelectMany
将其展平,您可以按如下方式执行:
var result = array1.SelectMany(row => array2.Select(col => group[row, col]));
如果要将结果从IEnumerable
转换为int[]
,则需要在语句末尾添加toArray()
。您可以按如下操作:
var result = array1.SelectMany(row => array2.Select(col => group[row, col]));
如果要将结果从IEnumerable
转换为int[]
,则需要在语句末尾添加toArray()