2013-06-05 97 views
8

創建一個列表,可以說:從另一個列表中

class Plus5 { 
    Plus5(int i) { 
     i+5; 
    } 
} 
List<int> initialList = [0,1,2,3] 

如何創建,從initialList,另一個列表呼籲initialList的每個元素Plus5()構造函數。 比什麼更好?

List<Plus5> newList = new List<Plus5>(); 
initialList.ForEach(i => newList.Add(Plus5(int))); 
+0

是的,我從INT –

+0

一個初步名單建設Plus5名單是否有你想擁有'Plus5'類型的原因?這聽起來像你可能只是想要建立一個新的'int'列表,其中'ints'碰巧增加了5 –

+0

它僅用於示例 –

回答

8

使用LINQ將5添加到列表中的每個數字。

var result = initialList.Select(x => x + 5); 
+0

好,我沒有意識到Select獲得了這個能力。 –

+0

看看這個鏈接http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b。它是學習LINQ的好地方。 – arunlalam

12

如何創建,從initialList,另一個列表調用Plus5() 構造函數initialList的每一個元素?

所以結果是List<Plus5> newList和您要創建的每intinitialListPlus5

List<Plus5> newList = initialList.Select(i => new Plus5(i)).ToList(); 

如果你想微觀優化(節省內存):

List<Plus5> newList = new List<Plus5>(initialList.Count); 
newList.AddRange(initialList.Select(i => new Plus5(i))); 
+0

這是一個正確的答案。然而,你可能想要建議一個替代解決方案,他可以創建一個'List ',這樣'ints'恰好會增加5 :) –

+0

@steaks:看起來好像roughnex已經發布了這個方法(至少'IEnumerable ')。然而,這不是OP要求的。 –

+0

是的,這是正確的答案。謝謝你,+5只是這個例子:D –

1

您可以使用LINQ作爲提及的粗略內容。

var result = initialList.Select(x => x + 5).ToList(); 

如果你有(像Plus5)的方法,它看起來像這樣

int Plus5(int i) 
{ 
    return I + 5; 
} 

var result = initialList.Select(Plus5).ToList(); 
1
List<Plus5> result = new List<Plus5>(InitialList.Select(x=>new Plus5(x)).ToList())); 
+0

這甚至不會編譯。您正在嘗試通過傳入'List '作爲構造函數參數來構建'List '。 –