我正在尝试将一个队列的一部分复制到另一个队列。作为一种折衷,我尝试了一种将队列的一部分复制到阵列的方法。
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的网页出现内部服务器错误,并且未显示我期望的数据。
答案 0 :(得分:2)
假设您所说的代码在验证movingAverageQueueAll.Count() > 210
之后,正如您所说的问题在最后一行,您可能会误解Queue.CopyTo的第二个参数。它不是movingAverageQueueAll
中的起点,而是movingAverageArray
中的一个复制数据的起点。因此,您的代码总是将原始数据收集复制到一个较小的数组中,并最终导致错误。
如果您打算在某个索引之后获取数据子集,请尝试执行此操作。 Skip
和Take
是LINQ方法。
var movingAverageArray = movingAverageQueueAll.Skip(210).Take(movingAverageQueueAll.Count() - 210);