簡體   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