将一部分队列复制到另一个队列,甚至从一个队列复制到数组

时间:2018-11-16 23:59:19

标签: c#

我正在尝试将一个队列的一部分复制到另一个队列。作为一种折衷,我尝试了一种将队列的一部分复制到阵列的方法。

var values = stocks.Select(s => new DateClose() { Date = s.Date.Date, Close = 
s.Close });
var movingAverageQueueAll = new Queue<DateClose>(values);
// take part of the movingAverageQueueAll put in an array
var movingAverageArray = new DateClose[movingAverageQueueAll.Count() -210].Select(h=> new DateClose()).ToArray();
 movingAverageQueueAll.CopyTo(movingAverageArray, 210);

问题出在“ movingAverageQueueAll.CopyTo(movingAverageArray,210);”行上

没有错误,但Controller的网页出现内部服务器错误,并且未显示我期望的数据。

1 个答案:

答案 0 :(得分:2)

假设您所说的代码在验证movingAverageQueueAll.Count() > 210之后,正如您所说的问题在最后一行,您可能会误解Queue.CopyTo的第二个参数。它不是movingAverageQueueAll中的起点,而是movingAverageArray中的一个复制数据的起点。因此,您的代码总是将原始数据收集复制到一个较小的数组中,并最终导致错误。

如果您打算在某个索引之后获取数据子集,请尝试执行此操作。 SkipTake是LINQ方法。

var movingAverageArray = movingAverageQueueAll.Skip(210).Take(movingAverageQueueAll.Count() - 210);