如何在我想修改的对象列表中动态选择对象的属性

Bas*_*yon -1 c#

我有一个类对象的列表

可以说这个类的结构是这样的

    class DataEntity 
    {
        public string col1 { get; set; }
        public string col2 { get; set; }
        public string col3 { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

所以名单将是

List<DataEntity> list = new List<DataEntity>
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题,我需要遍历列表并修改特定属性的值..但我不知道在运行时需要修改什么属性。

所以可以说有一个方法可以转换列表,并且要修改的属性名称作为字符串值传入

public List<DataEntity> Convert (List<DataEntity> list, string propertyName, string appendedValue)
{ 

}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何遍历该列表,并为输入的 propertyName 将 appendedValue 附加到该属性值

我知道我可以使用这样的反射来获取属性值

 Type type = dataEntity.GetType();
 foreach (PropertyInfo pi in type.GetProperties())
 {    
 }
Run Code Online (Sandbox Code Playgroud)

但我不确定如何利用它来定位特定属性以在运行时追加。

Abd*_*Mtk 5

你应该使用这样的东西:

PropertyInfo propertyInfo;
foreach (YourClass C in list)
{
    propertyInfo = C.GetType().GetProperty(propertyName);
    propertyInfo.SetValue(C, Convert.ChangeType(appendedValue, propertyInfo.PropertyType), null);
}
return list;
Run Code Online (Sandbox Code Playgroud)

有关更多信息,您可以查看这些链接:设置属性获取属性值