2016-07-22 4 views
-3

ich IEnumerable konvertieren will, wie unten definiertKonvertieren IEnumerable <Object> zu Anonymous Typ

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!" } 
    }; 

zum anonymen Typ "Daten"

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

Wer weiß, wie um dies zu realisieren? Vielen Dank.

+0

Sie ein Wörterbuch der Zeichenfolge verwenden könnte, string? –

Antwort

0

Die einzige Art, wie ich mir vorstellen kann ist ein ExpandoObject und dynamic zu verwenden:

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

Danke, das funktioniert für mich. – pseudoware

0

Sehr einfach. Versuchen Sie, diese

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

Was die falsche Ausgabe ergibt ... Sie würden 2 statt 1 Elemente erhalten, und nur die "body" -Eigenschaft des zweiten Elements würde den richtigen Wert haben. –

Verwandte Themen