【发布时间】:2015-11-07 18:19:25
【问题描述】:
我似乎无法弄清楚如何做到这一点。
我有一个具有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 库 Highcharts 中使用它
【问题讨论】:
-
你希望它如何每小时?您的代码中没有任何指定每小时分组或任何类似内容的内容。您按日期分组,然后为每个日期创建一条记录,其中包含当天所有记录的日期和平均时间。
-
正确,我不知道该怎么做,这是我的问题。我将编辑我的 OP 以确保清楚我在问什么。
-
那么只是按日期和小时分组的问题吗?有多种方法可以实现这一点,包括
...GroupBy(x => new { x.Date.Date, x.Date.Hour }) -
我还需要
TimeTaken是每个分组小时的平均值吗? -
那没关系,因为您是在组中平均。
标签: c# linq highcharts