将匿名类型转换为List <object>

时间:2019-02-11 09:24:17

标签: c# reflection anonymous-types

我从数据库中转储了一组匿名对象,该数据库包含许多字段(最多50个)。

示例:

var anonymousData = new
        {
            Z = "2",
            B = "4",
            C = "3",
            D = 5
        }; 

我希望获得带有此类数据的以下输出

List<object> allObjects ... with { "2", "4", "3", 5 };

反映它的正确方法是什么?

编辑:我想保持最初的顺序

1 个答案:

答案 0 :(得分:2)

通过反射,您可以获得所有值:

var anonymousData = new
        {
            Z = "2",
            B = "4",
            C = "3",
            D = 5
        };

Type t = anonymousData.GetType();
Property[] p = t.GetProperties();
List<object> xy = p.Select(x => x.GetValue(anonymousData)).ToList();

您添加了,您想要将属性的顺序保留在结果列表中。这是不可能的-考虑一下Car类型的对象:

new MyCar { Id = 3, Color= "red"};

这与

这样的汽车没有什么不同
new MyCar { Color= "red", Id = 3};

切换属性时。恕我直言,一种奇怪的类型没什么不同。因此,将其导出为CSV时,属性的排序应该没有任何区别-在这种情况下,您可能应该看看Dictionary