在一个数组中组合两个小数组列表

时间:2016-08-25 07:17:06

标签: c# arrays linq xamarin highcharts

我遇到了一个我正面临的问题,我无法解决这个问题,因为我可以解决这个问题。我有两个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() });

我希望有人可以帮助我。如果需要更多信息,请不要犹豫。 谢谢你的阅读。

亲切的问候,

费尔南多

2 个答案:

答案 0 :(得分:3)

您需要的是Zip扩展方法。

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

答案 1 :(得分:0)

Linq的Zip方法就是你的方式:

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

Docs

  

将指定的函数应用于两个对应的元素   序列,产生一系列结果。