2013-05-31 77 views
0

我有一個三維列表。外部列表表示有多少個課時。下一個內部列表表示有多少學生(列表中的位置是學生的唯一ID)。最終名單是該學生正在參加的課程。複製嵌套列表的最快方法

我能複製這個列表的最快方法是什麼?

我試圖

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