如何遍历匿名对象列表?

Mat*_*ias 3 c#

我有一些示例代码如下:

var items = new List<object>();

var testObjectOne = new
{
    Valueone = "test1",
    ValueTwo = "test2",
    ValueThree = "test3"
};
var testObjectTwo = new
{
    Valueone = "test1",
    ValueTwo = "test2",
    ValueThree = "test3"
};
items.Add(testObjectOne);
items.Add(testObjectTwo);

foreach (var obj in items)
{
    var val = obj.Valueone;
}
Run Code Online (Sandbox Code Playgroud)

但我无法访问Valueone并得到错误:object'不包含'Valueone'的定义,并且没有扩展方法'Valueone'接受类型'object'的第一个参数可以找到(你是否缺少using指令或装配参考?)

问题:如何迭代此列表并访问ValueOne?非常感谢任何帮助或意见,谢谢

sen*_*enz 6

您可以使用反射来获取匿名类型的属性:

var items = new List<object>();

var testObjectOne = new
{
    Valueone = "test1",
    ValueTwo = "test2",
    ValueThree = "test3"
    };
var testObjectTwo = new
{
    Valueone = "test1",
    ValueTwo = "test2",
    ValueThree = "test3"
};
items.Add(testObjectOne);
items.Add(testObjectTwo);

foreach (var obj in items)
{
    var val = obj.GetType()
        .GetProperty("Valueone")
        .GetValue(obj);
}
Run Code Online (Sandbox Code Playgroud)