2016-08-25 117 views
1

我遇到了一個我正面臨的問題,我無法將其包圍,因爲我可以解決這個問題。我有兩個List<decimals>,其中包含非常小的值,如0.0567和4.67890等等。然後我的第二個列表也是List<decimals>,包含以毫秒爲單位的紀元時間戳。例如:1472100900000,1472101200000,1472101500000等等。有了這樣的數據,我想創建一個像這樣的列表或數組。 (即array[] : [[1472100900000, 0.0567], [1472101200000, 4.67890], [1472101500000, 3.568]])等等。然後最後把它放在Highchart中,它會製作出一個不錯的圖表。將兩個小數點列表組合在一個數組中

這就是我已經用linq試過的,但結果並不是我想要的,因爲值並沒有設置在一起。

var combi2 = timeArray.SelectMany(x1 => valueArray, (x1, x2) => new[] { x1, x2 }); 
var combi3 = valueArray.SelectMany(x1 => timeArray, (x1, x2) => new { x1, x2 }).Select(x3 => new PerformanceGraphData { PerformanceTime = x3.x2.ToString(), PerformanceValue = x3.x1.ToString() }); 

我希望有人能幫助我。如果需要更多信息,請不要猶豫,問。 謝謝您的閱讀。

此致

費爾南多

+0

'Enumerable.Zip'方法。或者總是可以使用'for'循環 – ASh

回答

3

你需要的是Zip擴展方法。

timeArray.Zip(valueArray, (x1,y1) => new decimal[] {x1,y1}).ToArray(); 
+0

謝謝你的回答:)現在我有一個二維數組decimals [] [],你知道我怎麼可以l ToString維度中的第二個數組? –

+0

你的意思是,你希望在'string []'中輸出每個字符串代表'{x1,y1}'的輸出嗎? –

0

的LINQ的郵編法是自己的方式:

var graphData = timeArray.Zip(valueArray, 
         (x, y) => new PerformanceGraphData 
         { 
          PerformanceTime = x.ToString(), 
          PerformanceValue = y.ToString() 
         }).ToArray(); 

Docs

通過使用指定的函數在兩個 序列的對應元素,產生一系列結果。