每小时/每天/每月获取唯一用户数



我对 LINQ 表达式很陌生,需要在 MVC 中创建图表。

饼图具有标签部分: 如果情况是小时,它将有 1,2...24 如果一天那么 1,2...31 如果是月份,则 1,2...12

因此,对于每种情况,我都需要通过 UserID 获取唯一用户,因为我的表包含用户多次存在的对话数据。然后我必须返回相应的数组。 现在我有:

ViewBag.monthArray= db.Conversation.ToList().GroupBy(p => DateTime.Parse(p.Date_Time).Month).ToArray();

和图表代码:

var monthChart= @Html.Raw(Json.Encode(@ViewBag.monthArray));
var areaChartData = {
labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
datasets: [
{
label: 'Month Count',
fillColor: 'rgba(210, 214, 222, 1)',
strokeColor: 'rgba(210, 214, 222, 1)',
pointColor: 'rgba(210, 214, 222, 1)',
pointStrokeColor: '#c1c7d1',
pointHighlightFill: '#fff',
pointHighlightStroke: 'rgba(220,220,220,1)',
data: [monthChart]
}
]
}

如何计算每个案例的唯一用户数? 如何分隔每小时/每天/每月的计数?

您可以通过传入这样的匿名对象来按多个字段进行分组

ViewBag.monthArray= db.Conversation.ToList().GroupBy(p => new { DateTime.Parse(p.Date_Time).Month, p.UserID })
.ToArray();

如果您检查该结果,您可以看到您还能做什么。如果您只需要对月份和用户 ID 进行 JSON 处理,请添加 .Select(g => new { g.Key.Month, g.Key.UserID }( 在 ToArray 之前。

最新更新