簡體   English   中英

如何將對象列表轉換為一維數組?

[英]How do you convert a List of object to a one dimensional array?

我有一個看起來像這樣的對象列表:

 public class Hub
    {
        public string Stamp { get; set; }
        public string Latency0 { get; set; }
        public string Latency1 { get; set; }
        public string Latency2 { get; set; }
        public string Latency3 { get; set; }
        public string Latency4 { get; set; }
    }

將列表轉換為Json后,如下圖所示。

在此處輸入圖片說明

如何將列表轉換為圖像中顯示的數組? 我應該能夠創建一個C#數組,然后將其進一步轉換為圖像中所示的Json數組。

在此處輸入圖片說明

我嘗試在列表上使用此ToArray() ,但它僅將其轉換為對象數組。

source.Select(x => new string[]{
             x.Stamp, x.Latency0, x.Latency1,
             x.Latency2, x.Latency3, x.Latency4})
      .ToArray();

Aomine是正確的,但是如果您想以雙精度數組(或實際上為可為空的雙精度數組)的形式獲取結果,則需要執行以下轉換:

double temp;
source.Select(x => new string[]{
             x.Stamp, x.Latency0, x.Latency1, x.Latency2, x.Latency3, x.Latency4}
            .Select(n => double.TryParse(n, out temp) ? temp : (double?)null))
     .ToArray();

如果可以將值保持為字符串,Aomine的答案很好。 但是,您的屏幕快照似乎暗示您實際上需要將這些值轉換為數字。 由於這些可以有小數,可以為空,所以decimal? 是您需要的類型。

首先創建此輔助方法:

decimal? ParseOrNull(string value)
{
    decimal numericValue;
    return decimal.TryParse(value, out numericValue) ? numericValue : (decimal?)null;
}

接着:

hubs.Select(h => 
    new [] { h.Stamp, h.Latency0, h.Latency1, h.Latency2, h.Latency3, h.Latency4 }
            .Select(ParseOrNull).ToArray())
    .ToArray()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM