【问题标题】:Get unique users per hour/day/month每小时/每天/每月获取唯一用户
【发布时间】:2019-09-26 05:56:48
【问题描述】:

我对 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-1-2019,另一天发生在2-1-2019,他们的一天是一样的,他们会算在同一个day吗?也在hour?

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


【解决方案1】:

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

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 })。

【讨论】:

    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2017-09-26
    • 2012-02-24
    相关资源
    最近更新 更多