2016-07-22 1 views
-3

Je veux convertir IEnumerable, défini ci-dessousConvertir IEnumerable <Object> à Anonymous type

public class NameVal 
    { 
     public string Name { get; set; } 
     public string Content { get; set; } 
    } 

    IEnumerable<NameVal> contents = new List<NameVal>() 
    { 
     new NameVal { Name = "title", Content = "My new post" }, 
     new NameVal { Name = "body", Content = "This is my first post!" } 
    }; 

au type anonyme "données"

 var data = new 
     { 
      title = "My new post", 
      body = "This is my first post!" 
     }; 

Quelqu'un sait comment s'y prendre? Merci.

+0

vous pouvez utiliser un dictionnaire de ficelle, chaîne? –

Répondre

0

La seule façon que je peux penser est d'utiliser un ExpandoObject et dynamic:

var x = new ExpandoObject() as IDictionary<string, object>; 
foreach (NameVal nameVal in contents) { 
    x.Add(nameVal.Name, nameVal.Content); 
} 

dynamic d = x; 
Console.WriteLine(d.title); 
Console.WriteLine(d.body); 
+0

Merci, cela fonctionne pour moi. – pseudoware

0

Très simple. Essayez cette

var data = contents.Select(x => new 
     { 
      title = x.Name, 
      body = x.Content 
     }); 
+0

Ce qui donnera la mauvaise sortie ... vous obtiendrez 2 éléments plutôt que 1, et seule la propriété 'body' du second élément aura la valeur correcte. –