使用Linq按小时分组并获得每小时平均值

时间:2015-08-14 13:13:17

标签: c# linq highcharts

我似乎无法弄清楚如何做到这一点。 我有一个具有DateTime属性和int

的对象

我想按小时对DateTime进行分组,然后每小时平均TimeTaken个属性。

模型

public class ChartModel
{
    public DateTime Date { get; set; }
    public int TimeTaken { get; set; }
}

控制器

public ActionResult PopulateResponseTimeChart()
{
    // selectedItem is a type of IEnumerable<ChartModel>
    var average = selectedItem.GroupBy(x => x.Date.Date).Select(x => new { Date = x.Key, Average = x.Average(a => a.TimeTaken) });
    var data = average.Select(x => x.Average.ToString(CultureInfo.CurrentUICulture)).ToArray();
    var time = average.Select(x => x.Date).ToArray();

     // Other stuff
 }

以上情况似乎不起作用。 average只包含1个结果,当我期望它是每小时。 这背后的原因是我想在JS libary Highcharts中使用它

1 个答案:

答案 0 :(得分:2)

selectedItems.GroupBy(x => x.Date.Hour)
             .Select(g => new { Hour = g.Key, AverageTimeTaken = g.Average(x => x.TimeTaken) });