2017-10-15 63 views
1

我有一個二維數組: -2D陣列使用lambda表達式

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和長度從數組2 所得陣列,使得resultan噸陣列

arrayrel = {基[0,1],基團[0,3],基團[2,1],基團[2,3],基團[4,1]組[4,3]}

arrayrel={2,4,12,14,22,24}

這可以通過使用循環我在想,如果有使用lambda表達式來實現這一結果的方法來完成。

回答

2

您可以使用Select然後SelectMany

int[] arrayrel = array1.Select(i => array2.Select(j => group[i, j])).SelectMany(x => x).ToArray(); 

第一Select產生一個IEnumerable<IEnumerable<int>>,您使用扁平SelectMany

+0

它曾在第一次嘗試,感謝 –

2

如下你可以這樣做:

var result = array1.SelectMany(row => array2.Select(col => group[row, col])); 

如果你想轉換結果從IEnumerable<int>你需要在聲明的末尾添加toArray()int[]

+0

它的工作GR8 :) –