[英]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.