2009-12-15 66 views
2

我有一個匿名類型這種形式:迭代和創造新的匿名類型動態

new List<MyList>() 
{ 
    new Column { Name="blah", Width=100, Hidden=true }, 
    new Column { Name="blah1", Width=60, Hidden=false } 
} 

我怎麼能去動態地創建列表中的內容,如:

new List<MyList>() 
{ 
    foreach (var columns in col) { 
     new Column { Name=columns.Name ... etc } 
    } 
} 

即使col返回正確的數據,上面的例子是不可接受的,我不明白爲什麼。

回答

7

您嘗試遍歷對象初始化內部集合阻止(thx到盧克)。

先嚐試創建列表,比加油吧,

List<MyList> list = new List<MyList>(); 
foreach (var columns in col) 
{ 
    list.Add(new Column { Name=columns.Name ... etc }); 
} 
+0

謝謝你的快速回復。它看起來像它的作品! – Rio 2009-12-15 21:43:40

+0

+1,但有一個小挑剔:問題中的代碼沒有循環「列表構造函數內部」,它在循環內部的一個* object初始化*塊中。 http://msdn.microsoft.com/en-us/library/bb384062.aspx – LukeH 2009-12-16 00:21:36

+0

@Luke,你是對的,我會糾正這一點。 – 2009-12-16 05:34:27

1

可能像

var theList = new List<MyList>(); 
col.ForEach(c=> theList.Add(new Column(){ Name=c.Name ... etc })); 
2

不知道你要問什麼,但你有沒有嘗試過的形式的東西:

col.Select(c => new Column {Name = c.Name ... etc}).ToList(); 
+0

我認爲這是什麼海報問在第一​​,但我認爲BeowulfOFs答案可能是什麼力拓正在尋找。 – Dolphin 2009-12-15 21:41:52