2016-08-25 114 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

通过使用指定的函数在两个 序列的对应元素,产生一系列结果。