如何保留一些锯齿状数组的列和行,并删除c#中不需要的列和行

我有跟随锯齿状的数组

int[][] dists1 = new int[][] { new int[]{0,2,3,5,2,4}, new int[]{2,0,1,3,5,3}, new int[]{3,1,0,4,4,3}, new int[]{5,3,4,0,2,4}, new int[]{2,5,4,2,0,2}, new int[]{4,3,3,4,2,0} }; 

我学会了如何删除一个特定的列和行(例如3)。 这是一个链接 。

现在我希望动态编程如下:考虑这个数组

  int[] day={1,4,5}; 

这个数组可以是另一个数组( 因为这个原因,我使用了动态术语

数组“day”的元素显示“dists1”矩阵行和列,所以我希望名为“dists2”的新锯齿状数组只包含1,4,5 行和列“0”的列和行, 因为它是固定的行和列如下:

  int[][] dists2 = new int[][] { new int[]{0,2,2,4}, new int[]{2,0,5,3}, new int[]{2,5,0,2}, new int[]{4,3,2,0} }; 

只需修改该答案并用日期数组的Contains方法替换i!= 2条件:

 int[] day = {1,4,5}; int[][] finalDists = dists.Where((arr, i) => i == 0 || day.Contains(i)) //skip rows .Select(arr=> arr.Where((item, i) => i == 0 || day.Contains(i)) //skip cols .ToArray()) .ToArray(); 

无论如何,如果性能很重要,那么使用for循环而不是LINQ会更好。