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

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

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

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

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);
}

转载注明原文:c# – 如何遍历匿名对象列表? - 代码日志