Bonjour,
J'ai actuellement le code suivant:
Et je cherche à transformer mon type anonyme dynamic par l'utilisation d'ExpandoObject. Je cherche la manière la plus concise pour déclarer cela. Pouvez-vous m'aider?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class Output { public IEnumerable<dynamic> catList; public Output(IEnumerable<dynamic> catList) { this.catList = catList; } } var catList = new[] { new { name = "toto", age = 5 }, new { name = "titi", age = 7 }, new { name = "tata", age = 3 }, new { name = "tutu", age = 4 } }.ToList(); Output out = new Output(catList); ... var results = out; foreach (dynamic item in results.catList) { //utilisation de item.name et item.age }
Merci d'avance,
[EDIT1]
Ce que je voudrais c'est quelque chose comme ça :
Mais j'ai l'erreur de compilation "'System.Dynamic.ExpandoObject' does not contain a definition for 'name'" (pareil pour age bien sûr)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var catList = new System.Dynamic.ExpandoObject[] { new System.Dynamic.ExpandoObject() { name = "toto", age = 5 }, new System.Dynamic.ExpandoObject() { name = "titi", age = 7 }, new System.Dynamic.ExpandoObject() { name = "tata", age = 3 }, new System.Dynamic.ExpandoObject() { name = "tutu", age = 4 } }.ToList();
Ce qui fonctionne mais que je souhaiterais raccourcir au maximum, c'est ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 List<System.Dynamic.ExpandoObject> catList2 = new List<System.Dynamic.ExpandoObject>(); dynamic NameAge = new System.Dynamic.ExpandoObject(); NameAge.name = "toto"; NameAge.age = 5; catList.Add(NameAge); NameAge = new System.Dynamic.ExpandoObject(); NameAge.name = "titi"; NameAge.age = 7; catList.Add(NameAge); NameAge = new System.Dynamic.ExpandoObject(); NameAge.name = "tata"; NameAge.age = 3; catList.Add(NameAge); NameAge = new System.Dynamic.ExpandoObject(); NameAge.name = "tutu"; NameAge.age = 4; catList.Add(NameAge);
Partager