2013-05-31 4 views
0

У меня есть трехмерный список. Внешний список показывает количество периодов времени. Следующий внутренний список показывает, сколько учеников (позиции в списке - уникальные идентификаторы учащихся). Окончательный список - это курс, который студент принимает в этот период.Самый быстрый способ скопировать вложенный список

Каков самый быстрый способ скопировать этот список?

Я попытался

a.var = var.Select(x => x.ToList()).ToList().ToList(); 

Это не работает, хотя. Следующее - это то, что я использую, но я уверен, что есть намного более чистый и быстрый способ, и я хотел бы узнать, как это сделать.

foreach (PERIOD period in periods) 
{ 
    a.var.Add(new List<List<int>>()); 

    for (int student = 0; student < students.Count + 1; student++) 
    a.var[IntFromEnum(period)].Add(new List<int>()); 

    foreach (Course course in periods[IntFromEnum(period)]) 
    { 
    foreach (int student in course.students) 
     a.var[IntFromEnum(period)][student] = new List<int>(var[IntFromEnum(period)][student]) 
    } 
} 
+0

Хотя это не решение проблемы, возможно, вы должны использовать список объектов, а не примитивы. – emd

+0

Вы можете использовать параллельный foreach. – Yogee

ответ

1

Я не буду экспериментировать на своем типе, но предполагается, что ваш periods коллекция выглядит следующим образом

List<List<List<int>>> p; 

, то вы можете сделать некоторые внутренние Select s для копирования. Что-то вроде этого:

var a = p.Select(x => new List<List<int>>(x.Select(y => new List<int>(y)))).ToList(); 

или уборщицей:

var a = p.Select(x => x.Select(y => y.ToList()).ToList()).ToList(); 

Не обязательно самый быстрый, но довольно просто с кодом.

+0

Вот что я с нетерпением ждал. Теперь, когда я это вижу, это имеет смысл. – flaVius

+0

@flaVius не забудьте принять ответ, если это поможет. – nawfal

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