如何将键值对列表转换为动态对象

6
基本上,我正在尝试从以下内容进行转换:
keys[3] = {"id", "name", "comment"}
values[3] = {"1", "Ackerman", "superuser"}

to:

new { id: "1", name: "Ackerman", comment: "superuser"}

我该怎么做?


1
那不是一个"动态对象";那是一个"匿名类型"。你指的是哪个? - Marc Gravell
k; 现在 - 这里的 keysvalues 是什么?因为这并不明显。那不是有效的 C# 语法...它们是数组吗?如果是,那么 string[][] keysobject[][] values 是什么? - Marc Gravell
@MarcGravell 它们是字符串数组。 - hurtchin
你考虑过使用字典吗? - Selman Genç
@hurtchin 传递Dictionary<string,object>是否可行?你能告诉我你正在使用的API的名称吗? - Marc Gravell
显示剩余12条评论
1个回答

8
我认为您需要的是一个Expando对象,它允许动态添加属性:
keys[3] = {"id", "name", "comment"}
values[3] = {1, "Ackerman", "superuser"}

dynamic item = new ExpandoObject();
var dItem = item as IDictionary<String, object>;

for(int buc = 0; buc < keys.Length; buc++)
    dItem.Add(keys[buc], values[buc]);

之后,您可以像处理其他对象一样调用您的对象:

var id = item.id;
var comment = item.comment;
item.name = "new name";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接