C# 转换IEnumerable<;对象>;到匿名类型

C# 转换IEnumerable<;对象>;到匿名类型,c#,linq,anonymous-types,C#,Linq,Anonymous Types,我想转换一个IEnumerable,定义如下: 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 pos

我想转换一个
IEnumerable
,定义如下:

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 = contents.Select(x => new
{
    title = x.Name,
    body = x.Content
});

我能想到的唯一方法是使用
expandooobject
动态

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);
var x=newexpandoobject()作为IDictionary;
foreach(目录中的NameVal NameVal){
x、 添加(nameVal.Name,nameVal.Content);
}
动态d=x;
控制台。书写线(d.标题);
控制台写入线(d.body);

您可以使用字符串字典,字符串?这将给出错误的输出。。。您将得到2个项目而不是1个,并且只有第二个项目的
body
属性具有正确的值。
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);