我有一个带有库存信息的CSV(我有一个名为DailyValues
的{{1}}对象列表),我需要从中提取。它看起来像这样:
stockValues
基本上,我需要使用LINQ在CSV中找到每年的平均音量。我可以做到,但它很邋and,只能工作一年,所以我必须每年复制一段时间才能完成它(它有1993 - 2012年)。这就是我所拥有的:
Date,Open,High,Low,Close,Volume,Adj Close
2012-11-01,77.60,78.12,77.37,78.05,186200,78.05
2012-10-31,76.96,77.75,76.96,77.47,290700,77.47 //and so on
所以,再次,这很好,但我不想每年都这样做。有没有人知道如何简化我的问题?
答案 0 :(得分:3)
你可以试试像:
var groupedValues = stockValues.GroupBy(n => n.Date.Year)
.Select (g => new {
Average = g.Average(p => p.Volume),
Year = g.Key
});
这将返回每年的平均值,请参阅此fiddle
答案 1 :(得分:2)
var groupedResults = stockValues.GroupBy(m => m.Date.Year)
.Select(g => new {
year = g.Key,
avg = g.Average(s => s.Volume)
});
foreach (var res in groupedResults)
Console.WriteLine("{0} average : {1}", res.year, res.avg));