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

时间:2017-08-13 10:32:45

标签: c# linq asp.net-web-api

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

  [
    { name:"john", age:25 },
    { name:"bill", age:26 },
    { name:"scott", age:27 }
  ]

当我通过asp.net web api将此对象发送给用户时,它会像这样返回:

  [
    ["john",  25 ],
    [ "bill", 26 ],
    [ "scott", 27 ]
  ]

但是我想把我的回复发送成这样的数组:

{{1}}

我的对象属性可能会被请求更改。

我需要为我的对象p​​roerty值创建一个N十进制数​​组。有没有办法做到这一点?

2 个答案:

答案 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()