2009-12-15 5 views
2

j'ai un type anonyme de cette forme:Itère et la création de nouveaux types anonymes dynamiquement

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

Comment puis-je aller sur la création du contenu dans la liste dynamique, comme:

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

Même avec col retourner le bon type de données, l'exemple ci-dessus n'est pas acceptable et je ne vois pas pourquoi.

Répondre

7

Vous essayez de boucle sur la collection dans l'objet initialiseur bloquer (merci à Luc).

Essayez de créer la première liste et que de le remplir,

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

Merci pour votre réponse rapide. On dirait que ça marche! – Rio

+0

+1, mais avec un petit pointeur: Le code de la question ne boucle pas "dans le constructeur de la liste", il est bouclé dans un bloc * object initializer *. http://msdn.microsoft.com/en-us/library/bb384062.aspx – LukeH

+0

@Luke, vous avez raison, je vais corriger cela. –

1

peut-être quelque chose comme

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

Je ne sais pas exactement ce que vous demandez, mais avez-vous essayé quelque chose de la forme:

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

Je pensais que c'était ce que l'affiche demandait au début, mais je pense que BeowulfOFs réponse est peut-être ce que Rio recherche. – Dolphin