如何基于列表长度在C#动态对象中添加对应数量属性
动态为ExpandoObject添加属性的正确实现
你当前的代码存在问题:直接使用obj.temp赋值时,只会创建一个名为temp的固定属性,而非以员工的FirstName值作为属性名。要实现动态按列表元素创建独立字段,需借助ExpandoObject实现的IDictionary<string, object>接口来操作,具体代码如下:
dynamic dynamicObj = new ExpandoObject(); var dict = (IDictionary<string, object>)dynamicObj; foreach (Employee emp in EMPLIST) { // 以员工FirstName作为属性名,存储对应的Employee实例 dict[emp.FirstName] = emp; }
核心说明
ExpandoObject本身实现了IDictionary<string, object>接口,转换后可通过键值对形式动态添加属性- 遍历列表时,直接将
emp.FirstName作为键、员工实例作为值存入字典,最终dynamicObj会生成以每个员工姓名命名的独立属性 - 后续可直接通过
dynamicObj.员工姓名的方式访问对应员工实例
内容的提问来源于stack exchange,提问作者Tripurari Kumar Jha
相关产品推荐
相关产品推荐

