首页 > 解决方案 > 每小时/每天/每月获取唯一用户

问题描述

我对 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]
        }
    ]
}

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

标签: c#asp.netasp.net-mvclinq

解决方案


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

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

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


推荐阅读