繁体   English   中英

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

[英]How to convert C# object property values to N decimal array

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

  var myobject = List<object> {
    new { name="john", age=25 },
    new { name="bill", age=26 },
    new { name="scott", age=27 }
  }

当我通过asp.net网络api将这个对象发送给用户时,它返回如下:

  [
    { 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 ] { age = 15, shoeSize = 10 } [11, 10 ] 因此,使用服务的用户需要明确地知道发送回了什么。

编辑:这是显示其工作方式的小提琴: https : //dotnetfiddle.net/iej1pO

您可以直接通过下一条指令进行转换:

  myobject.Select(o => new object[]{ o.name, o.age}).ToArray()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM