每小时/每天/每月获得唯一身份用户

时间:2019-09-26 05:56:48

标签: c# asp.net asp.net-mvc linq

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

如何计算每种情况下的唯一身份用户? 如何区分每小时/每天/每月的计数?

1 个答案:

答案 0 :(得分:0)

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

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

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