2016-07-22 4 views
-3

Я хочу, чтобы преобразовать IEnumerable, определяемые нижеПреобразование IEnumerable <Object> для анонимного типа

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

анонимного типа «данные»

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

Каждый знает, как идти об этом? Благодарю.

+0

вы можете использовать словарь строки, строки? –

ответ

0

Единственный способ, которым я могу думать о том, чтобы использовать ExpandoObject и 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

Спасибо, это работает для меня. – pseudoware

0

Очень простой. Попробуйте

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

Что даст неправильный результат ... вы получите 2 элемента, а не 1, и только свойство 'body' второго элемента будет иметь правильное значение. –

Смежные вопросы