2015-06-29 2 views
0

У меня есть список, который возвращает мои данные в следующем формате:Как создать собственный упорядоченный массив из списка?

1,2,3,4,5,6 

Что делать, если я хотел, чтобы вернуть массив в следующем формате? :

[1,2],[3,4],[5,6] 

Вот что я написал до сих пор:

List<string> list = new List<string>();    
      foreach (var record in model.rows) 
      { 
       list.Add(record[0]); 
       list.Add(record[1]);     
      } 

      Console.WriteLine(list); 
+0

Что делать, если в списке содержится нечетное число значений? –

+1

Дубликат-дубликат (http://stackoverflow.com/questions/4461367/linq-to-objects-return-pairs-of-numbers-from-list-of-numbers) задает именно ваш вопрос, если вам нужна копия- вставить готовый раствор. –

ответ

2

Результат вы хотите список массивов. Вы можете попробовать это:

List<int[]> list = new List<int[]>(); 

for(int i = 0; i < model.Length; i++) 
    list.Add(new[] { model[i], i+1 >= model.Length ? 0 : model[++i] }); 

Оператор ++i увеличит значение i и читать. SO, второй элемент массива определяется проверкой, если i + 1 больше, чем длина коллекции model. Если да, то установлен 0, в противном случае следующий элемент выбора model.

+0

быстрее на ничью, чем я! Вам нужно увеличивать i на два вместо одного в вашем цикле for? –

+0

это приведет к исключению индекса за пределами диапазона в последней строке. –

+1

@ rlb.usa Нет, потому что '++ i' также увеличит' i'. Если бы вы использовали 'i + 1'. – juharr