我有两个stockDates
,stockClosing
和IEnumerable<DateTime> stockDates = stocks.Select(equity => equity.Date);
IEnumerable<decimal> stockClosing = stocks.Select(equity => equity.Close);
// create a queue
Queue<MovingAverage> movingAverageQueue = new Queue<MovingAverage>();
,我想放在一个队列中。
stockDates
如何将stockClosing
和movingAverageQueue
添加到新创建的namespace myBackEnd.Models
{
public class MovingAverage
{
public DateTime Date { get; set; }
public decimal Close { get; set; }
}
}
中?
这是MovingAverage类:
^(?:(?:^|\.)(?:2(?:5[0-5]|[0-4]\d)|1?\d?\d)){4}$
答案 0 :(得分:1)
您可以为此使用IEnumerable.Zip()
,但是由于帖子中未显示MovingAverage
类,因此我仅使用了示例属性:
movingAverageQueue = stockDates.Zip(stockClosing , (d, c) => new MovingAverage{ Date = d, Average = c});
如果它们都在股票中,并且您希望获得一个日期的平均收盘价,那么您可以这样做:
var result = stocks.GroupBy(x=> x.Date.Date)
.Select(g => new MovingAverage{ Date = g.Key, Average = g.Average()});
请注意,在stocks.GroupBy(x=> x.Date.Date)
中,由于x.Date
是一个DateTime,x.Date.Date
将是其日期(没有时间),因此所有具有相同日期的分组都将相等。
答案 1 :(得分:0)
您可以使用队列构造器Queue(ICollection)
new Queue<MovingAverage>(stocks.Select(stock => new MovingAverage(...))
答案 2 :(得分:0)
如果movingAverageQueue
是已经存在的Queue
,则可以仅在Stocks
[Enumerable]
和.Enqueue()
上使用ForEach新的MovingAverage
对象:
stocks.ForEach(s => movingAverageQueue.Enqueue(new MovingAverage { Date = s.Date, Close = s.Close }));