循环遍历实体对象的所有属性并获取相应的值?

时间:2015-07-30 10:53:34

标签: c# entity-framework reflection

我正在使用Entity framework 6 DBContext,Database First。

让我们说一个实体中有一个 myobj1 对象。

有没有办法循环遍历这个对象的所有属性并获取每个属性的当前值?

当然,我需要一个适用于任何实体的任何对象的通用代码。

1 个答案:

答案 0 :(得分:1)

这样的事情:

var values = instance.GetType().GetProperties().Select(x => x.GetValue(instance, null));

如果您还想要该属性的名称,请使用:

var values = instance.GetType().GetProperties().Select(x => 
        new 
        {
            property = x.Name, 
            value = x.GetValue(instance, null)
        })
        .ToDictionary(x => x.property, y => y.value);

这将选择给定类型的所有属性,并获取所需实例的名称和值。

但是,此方法仅适用于简单的非索引属性。

编辑:同时查看Bindingflags上的MSDN以限制从GetType().GetProperties返回的属性 - 特别是当您还需要基类的属性时。