如何将C#对象属性值转换为N十进制数组

如何将C#对象属性值转换为N十进制数组,c#,linq,asp.net-web-api,C#,Linq,Asp.net Web Api,我想像这样将我的对象属性值转换为数组。(此列表作为对象动态来自数据库。) 但我想以数组的形式发送响应,如下所示: [ { name:"john", age:25 }, { name:"bill", age:26 }, { name:"scott", age:27 } ] [ ["john", 25 ], [ "bill", 26 ], [ "scott", 27 ] ] 我的对象属性可能会根据请求进行更改 我需要为我的对象属性

我想像这样将我的对象属性值转换为数组。(此列表作为对象动态来自数据库。)

但我想以数组的形式发送响应,如下所示:

  [
    { name:"john", age:25 },
    { name:"bill", age:26 },
    { name:"scott", age:27 }
  ]
  [
    ["john",  25 ],
    [ "bill", 26 ],
    [ "scott", 27 ]
  ]
我的对象属性可能会根据请求进行更改


我需要为我的对象属性值创建一个N十进制数组。有什么方法可以做到这一点吗?

如果不知道属性的名称,则必须使用反射。例如:

var results = myobject.Select(o => 
    o.GetType()
        .GetProperties()
        .Select(p => p.GetValue(o)));
但是,需要注意的是,由于您没有将属性的名称与值一起发送,这将导致一些歧义。例如,如果对象看起来像
{age=15,shoeSize=10}
,那么您将发送
[11,10]
。因此,消费服务需要明确地知道返回了什么


编辑:这里有一把小提琴展示了它的工作原理:

它们真的是
对象吗?你没有实际类中的初始数据吗?它们是对象是的,不是标准的计算。如果属性是动态的,那么你将不得不求助于反射。是的,我不知道属性名称。myobject是我的列表吗?那么试试看,它给出的正是您要求的输出。关于什么?我的代码不会这样做,但无论您正在传递或正在接收它,都可能会这样做。对不起,我的错误。
var results = myobject.Select(o => 
    o.GetType()
        .GetProperties()
        .Select(p => p.GetValue(o)));