我想将我的对象属性值转换为这样的数组。 (此列表动态地来自数据库作为对象。)
[
{ name:"john", age:25 },
{ name:"bill", age:26 },
{ name:"scott", age:27 }
]
当我通过asp.net web api将此对象发送给用户时,它会像这样返回:
[
["john", 25 ],
[ "bill", 26 ],
[ "scott", 27 ]
]
但是我想把我的回复发送成这样的数组:
{{1}}
我的对象属性可能会被请求更改。
我需要为我的对象proerty值创建一个N十进制数组。有没有办法做到这一点?
答案 0 :(得分:-1)
如果您不知道属性的名称,则必须使用反射。例如:
var results = myobject.Select(o =>
o.GetType()
.GetProperties()
.Select(p => p.GetValue(o)));
但是,请注意,因为您没有发送属性的名称以及值,这会导致一些歧义。例如,如果对象看起来像{ age = 15, shoeSize = 10 }
,那么您将发送[11, 10 ]
。因此,消费服务需要明确知道发回的内容。
编辑:这是一个显示其工作原理的小提琴:https://dotnetfiddle.net/iej1pO
答案 1 :(得分:-2)
您可以直接转换下一条指令:
myobject.Select(o => new object[]{ o.name, o.age}).ToArray()