2015-04-26 4 views
1

я следующий зубчатого массивКак сохранить некоторые столбцы и строки зубчатым массива и удалить ненужные столбцы и строки в 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). Вот a link.

Теперь я хочу, чтобы иметь динамическое программирование следующим образом: рассмотрим этот массив

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

этот массив может быть другой массив (я использовал динамический срок по этой причине)

где элементы массив «день» показывает строки и столбцы матрицы «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} 
      };                          

ответ

2

Просто измените that answer и заменить 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(); 

Во всяком случае, если производительность имеет значение, это способ лучше использовать для петель вместо LINQ.

+0

спасибо за ваш ответ, да это отлично работает для меня :) просто я думаю, что мы должны опустить «!» перед днем, потому что мне нужны эти элементы. –

+0

. Добро пожаловать, да, это моя ошибка, я редактирую это. –

Смежные вопросы